Dlaczego warto korzystać z env w shebang?


Odpowiedzi:


11

Niektóre osoby mogą używać innego pytona (perl itp.) Niż systemowy. /usr/bin/env pythonuruchomiłby wersję skonfigurowaną jako bieżąca, prawdopodobnie czyniąc skrypt bardziej przenośnym.

Z drugiej strony, podobno niektóre systemy nie mają /usr/bin/env. Nie można także użyć #!/usr/bin/env foo xjako zamiennika #!foo x, ponieważ foo xbędzie interpretowany jako pojedynczy argument. Tak więc wartość tego podejścia jest dyskusyjna.


1
Skonfigurowany gdzie? Od info coreutils 'env invocation'widzę tę formę nazywając dba o to zewnętrzny binarnego zamiast muszli wbudowany, ale nie wskazuje, w jaki sposób env pythonbędzie się różni od python?
Tuminoid

4
Twój PATHprawdopodobnie obejmuje /usr/local/binpierwszy. Jeśli ktoś ręcznie zainstalował tam Pythona, wtedy go envwywoła, podczas gdy #!/usr/bin/pythongo obejdzie.
Robie Basak

2
virtualenvjest dość popularnym narzędziem i instaluje plik wykonywalny Pythona w katalogu roboczym. Potrzebujesz envsztuczki, aby działał poprawnie.
Flimm

2
@Tuminoid: masz rację: env pythonjest taki sam jak python. Problem polega jednak na tym, że nie można napisać shebang typu #!python: musisz podać pełną ścieżkę.
Andrea Corbellini,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.