/usr/bin/envはどのプログラムを使用するのか、どうすればわかりますか?

/usr/bin/envはどのプログラムを使用するのか、どうすればわかりますか?

shebangを使用して#!/usr/bin/env pythonスクリプトを実行すると、システムはpythonどのスクリプトを使用するかをどのように知ることができますか?python環境変数でbinパスを見つけると、何も見つかりません。

env | grep -i python

ベストアンサー1

これシェルボーン行(「sharp bang」、つまり#!)はカーネルによって処理されます。カーネルはこのような環境変数について知りたくありませんPATH。したがって、shebang行の名前は実行可能ファイルの絶対パスでなければなりません。スクリプト名の前に実行可能ファイルに渡す追加の引数を指定することもできます(ここでは説明しないシステム固有の制限があります)。たとえば、Pythonスクリプトでは、次のように指定できます。

#!/usr/bin/python

最初の行では、スクリプトを実行するとカーネルが実際に実行されます/usr/bin/python /path/to/script。しかし、これは便利ではありません。コマンドのフルパスを指定する必要があります。一部のコンピュータと他のコンピュータに対する権限がある場合はpythonどうなりますか?または、特定のバージョンのPythonを有効にしますか?カーネルはユーザーに代わって照会を実行しないため、次の場所で必要なインタープリターを見つけるコマンドをカーネルに実行させることをお勧めします。/usr/bin/usr/local/binPATH/home/joe/opt/python-2.5/binPATHPATH

#!/fixed/path/to/path-lookup-command python

path-lookup-command実行可能ファイルの名前を引数として取得し、検索して実行する必要があります。PATHカーネルが実行されます/fixed/path/to/path-lookup-command python /path/to/script。そんなことが起こり、envコマンドはまさにそのことをします。主な目的は、さまざまな環境でコマンドを実行することですが、コマンド名を見つけるため、$PATH私たちの目的に最適です。

これは正式には保証されませんがenv/usr/bin#!/usr/bin/env

#!/usr/bin/env python

おすすめ記事