非常に興味深い例:
shがシェルです。SHのa.shを実行し、それは私がこのshスクリプトを説明するために使用することを意味します。私は直接./a.sh実行する場合、スクリプトの最初の行を見つけますまず最初に、インタプリタは、指定されていない場合は、現在のシステムのデフォルトを使用するかどうかを指定インタプリタが指定されている場合、シェルは(ほとんどのLinuxのデフォルトはbashの場合)、スクリプトはインタプリタを指定します。
文書の内容a.runたとえば、この次のとおりです。
#!は/ usr / binに/ pythonの 印刷(" これはPythonスクリプトです")
ですから、./a.runを実行した場合、結果はテキストの行の出力ですが、SHのa.runを実行する場合、文句を言うだろう
[feishu @ localhostのTMP] $ ./ a.run これはPythonスクリプトである [feishu @ localhostのTMP] $ shをa.run a.run:行2: `予期しないトークンの近くに構文エラー" これは、Pythonスクリプトである"」 a.runは、 :行2: `プリント(" これは、Pythonスクリプトです")"
これはPythonスクリプトなので、SH(.RUN接尾辞を任意の名前が付けられ、Linuxの接尾辞で、通常は非常に厳格ではないことに注意してください)をお読みください。
あなたは、シェルスクリプトを書いて、./a.sh SH aをお願いしています。 SH差、これはデフォルトのシェルおよびスクリプトに依存し、あなたがSHを書く場合(Bourneシェル)スクリプトとSHを宣言するインタプリタの最初の行、そう違いはありませんが、あなたはbashのを書く場合( 、Bourne Againシェル)スクリプトビルトインコマンドのbashとshの一部、および文法が同じではないので、その結果は、異なる可能性があります。
-------------------------------------------------- -追加---------------------------------------------- ------
私のテスト環境はRedHatの7.4
#1 [ルート@ localhostのは〜] のls -al ` shを` lrwxrwxrwxを。1つのルートルート4 6月21 2018の/ usr / binに/ shの - > bashの [feishu @ localhostの〜] $ エコー$ SHELL / binに/ bashの
あなたはシェルスクリプトを記述する場合は、このリリースでは、SHが実際にbashのあるあなたを見ることができますが、このスクリプトは、最初のラインシェルインタプリタを宣言し使用してa.sh SH ./a.shませんしませんでした違いは何ですか