web-dev-qa-db-ja.com

POSIXシェルスクリプトShebang#!/ bin / sh vs#!/ usr / bin / env sh、何か違いはありますか?

最近、多くのスクリプトが Shebang/usr/bin/envを使用していることに気付きました。私は主に BashPython を使用することを見てきましたが、これまで [〜#〜] posix [〜#〜]shと組み合わせて使用​​することはありません。 (ashdash、...)。

なぜ、そして私が移植性の高いものであるのか [〜#〜] posix [〜#〜] シェルスクリプトがenvアプローチの恩恵を受ける可能性があるのはなぜですか?


使用するかどうかについての一般的な合意はありますか?

  • 標準:

    #!/bin/sh
    
  • 環境:

    #!/usr/bin/env sh
    

これを十分に強調しましょう:

shでこれを見たことはありません。

8

#!/bin/shに設定すると、そのファイル/bin/shに直接移動します。

#!/usr/bin/env shに設定すると、shを引数として/usr/bin/envが実行されます。これにより、/bin/shを明示的に指定するのではなく、sh変数のPATHによってスクリプトが実行されます。

14
Reynaldo Aceves