shebangは常に通訳者のインストールディレクトリと同じディレクトリですか?

shebangは常に通訳者のインストールディレクトリと同じディレクトリですか?

shebangヘッダーは常にインタプリタのインストールディレクトリと一致する必要がありますか?それでは、なぜ両方とも私にとって効果的ですか#!/usr/bin/python#!/usr/local/bin/python

ベストアンサー1

他の人が指摘したように、shebang行は存在する実際のファイルを参照する必要があります。

これは、異なるシステムが異なる場所にバイナリをインストールできるため、スクリプトの移植性の弱点です。

他の人が述べたように、この問題を解決する1つの方法はリンクを使用することです。

別の方法は、システムの正しいパスを参照するようにスクリプトを編集することです。

/usr/bin/envこの問題を解決する別の方法は、PATHで実行可能ファイルを見つけることを使用することです。

だから代わりに:

#!/usr/bin/python

書く:

#!/usr/bin/env python

これにより、/usr/bin/env個々の実行可能ファイルではなく、必要なときにのみシンボリックリンクをリンクできます。

もちろん、正しく機能するには、実行可能ファイルがPATHに存在する必要があります。

ご覧のとおり、100%のクリーンなソリューションはありません。覚えておいてください:「悪いほど良い」(:

おすすめ記事