Neden env kullanıyorsunuz?


19

#!/usr/bin/env <sh|bash|python>Mesele kullanmanın amacı ne ile karşılaştırıldığında #!/bin/bash, #!/bin/shveya #!/usr/bin/python?


4
Burada env'in genel kullanımı konusunda iyi bir cevap var .
Kevin Bowen

Yanıtlar:


11

Bazı insanlar sistemdekinden farklı bir python (perl vb.) Kullanabilir. /usr/bin/env pythongeçerli olarak yapılandırılmış sürümü çalıştırır, betiği daha taşınabilir hale getirir.

Öte yandan, bazı sistemlerin olmadığı bildirildi /usr/bin/env. Ayrıca, #!/usr/bin/env foo xyerine geçemezsiniz #!foo x, çünkü foo xtek bir argüman olarak yorumlanır. Dolayısıyla yaklaşımın değeri tartışmalıdır.


1
Nerede yapılandırıldı? Gönderen info coreutils 'env invocation'Ben markaları çağıran bu formu görebilirsiniz emin yerine yerleşik kabuğun dış ikili, fakat hiçbir belirti nasıl env pythonherhangi farklı olurdu python?
Tüminoid

4
Sizin PATHmuhtemelen içerir /usr/local/binilki. Birisi buraya manuel olarak python yüklediyse, envonu çağırır, oysa #!/usr/bin/pythonatlar.
Robie Basak

2
virtualenvoldukça popüler bir araçtır ve çalışma dizinine çalıştırılabilir bir python yükler. envDüzgün çalışması için hile gerekir .
Flimm

2
@Tuminoid: haklısın: env pythonile aynı python. Ancak sorun şuna benzer bir yazı yazamamanızdır #!python: tam bir yol belirtmeniz gerekir.
Andrea Corbellini
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.