回答:
一部の人は、システムのものとは異なるpython(perlなど)を使用する場合があります。/usr/bin/env python現在のバージョンとして構成されたバージョンを実行し、スクリプトの移植性を高める可能性があります。
一方、伝えられるところでは、一部のシステムにはがありません/usr/bin/env。また、は単一の引数として解釈されるため#!/usr/bin/env foo x、の代わりとして使用することはできません。したがって、アプローチの価値は議論の余地があります。#!foo xfoo x
info coreutils 'env invocation'私が作るの呼び出しのこのフォームは、必ずそれが外部バイナリの代わりに、内蔵されたシェルが、どのように表示なしで見ることができますenv pythonから、何が違うのでしょうかpython?
PATHおそらく含まれて/usr/local/bin最初。誰かが手動でPythonをインストールした場合、それenvを呼び出しますが、それ#!/usr/bin/pythonをバイパスします。
virtualenvは非常に人気のあるツールであり、Python実行可能ファイルを作業ディレクトリにインストールします。env正しく動作させるには、トリックが必要です。
env python同じpythonです。ただし、問題は、次のようなシバンを書くことができないことです#!python。フルパスを指定する必要があります。