Da sich Interpreter wie zsh, bash, python und perl möglicherweise an verschiedenen Stellen im Dateisystem befinden, haben Skripte häufig einen Shebang, der env
für die Portabilität verwendet wird, z #!/usr/bin/env zsh
. Wie http://en.wikipedia.org/wiki/Shebang_(Unix)#Portability erklärt, erlauben viele Systeme, einschließlich Linux, die Weitergabe von Argumenten an den Interpreter nicht.
Oft möchte ich etwas tun #!/usr/bin/env zsh -f
, um zu verhindern, dass mein Skript jemals mein Skript liest ~/.zshenv
, oder ich möchte dies tun #!/usr/bin/env perl -w
usw. Dies funktioniert unter OS X, aber nicht unter Linux.
Was ist die Problemumgehung dafür? Kann ich das Beste aus beiden Welten haben: Portabilität und Argumente für den Dolmetscher? Geben Sie nach Möglichkeit eine allgemeine Problemumgehung an, die für alle Dolmetscher funktioniert, nicht nur für zsh.
[ "x$ZSH_VERSION" = "x" ] && exec zsh -f "$0" "$@"
#! /usr/bin/env POSIXLY_CORRECT=1 bash
funktioniert nicht so, als ob du/usr/bin/env "POSIXLY_CORRECT=1 bash" script
an der Shell geschrieben hättest .