Jawaban:
Beberapa orang mungkin menggunakan python berbeda (perl, dll.) Daripada yang satu sistem. /usr/bin/env python
akan menjalankan versi yang dikonfigurasikan sebagai versi saat ini, mungkin membuat skrip lebih portabel.
Di sisi lain, kabarnya, beberapa sistem tidak memiliki /usr/bin/env
. Juga, Anda tidak dapat menggunakan #!/usr/bin/env foo x
sebagai pengganti #!foo x
, karena foo x
akan ditafsirkan sebagai argumen tunggal. Jadi nilai pendekatannya bisa diperdebatkan.
info coreutils 'env invocation'
saya dapat melihat bentuk panggilan ini memastikan itu adalah biner eksternal, bukan shell built-in, tetapi tidak ada indikasi bagaimana env python
bedanya python
?
PATH
mungkin termasuk yang /usr/local/bin
pertama. Jika seseorang telah menginstal python secara manual di sana, maka env
akan memanggilnya, sedangkan #!/usr/bin/python
akan memotongnya.
virtualenv
adalah alat yang cukup populer, dan menginstal python executable di direktori kerja. Anda akan membutuhkan env
trik untuk membuatnya berfungsi dengan benar.
env python
sama dengan python
. Namun masalahnya adalah Anda tidak bisa menulis seperti shebang #!python
: Anda harus menentukan path lengkap.