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