web-dev-qa-db-ja.com

CentOS 7シェルスクリプトインタープリター

CentOS 7で実行するシェルスクリプトの作成を開始します。どのインタープリターを呼び出す必要がありますか。また、Shebang行はどのように表示する必要がありますか?

私はこれを試しました:

#!/bin/sh  

しかし、cd /bin その後 ls -al何百ものサブディレクトリがあり、どれもshではありません。どちらを使用すればよいですか?スクリプトはいくつかのmavenコマンドを実行します。

3
CodeMed

実際、CentOS 7では、/bin/sh/bin/bashへのシンボリックリンクであり、ほとんどのLinuxディストリビューションでデフォルトで使用可能なシェルです。

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4  9 febr. 08:21 /bin/sh -> bash

(上記のコマンドでNo such file or directoryが返された場合は、問題ありません。正しいパスを知るためにwhich shを実行できます)

したがって、私と同じ出力がある場合、#!/bin/sh#!/bin/bashの使用は同じです。

別の方法として、このシバンを使用できます:#!/usr/bin/env shまたは#!/usr/bin/env bash。この場合、sh/bin/usr/bin、またはどこかに決まっている場合でも、PATHで使用可能な最初のbashまたはshが実行されます。移植性には便利かもしれませんが、PATHにshという名前の実行可能ファイルが複数ある場合、セキュリティ上の問題が発生する可能性があることに注意してください。

3
apaul

必要なインタープリター(bash、csh、zsh、sh、Perlなど)を呼び出すことができます。

#!/bin/shはPOSIXly-correctであり、実行する必要があります。

ls /bin | grep sからの出力は何ですか?

また、ファイルの権限を確認することもできます。私が最初のスクリプト(chmod +x ./myscript.sh)を書いていたとき、それは私を殺しました。

2
SailorCire