Ich habe kürzlich einen Patch für die GNU Coreutils-Version von geschrieben env
, um dieses Problem zu beheben :
http://lists.gnu.org/archive/html/coreutils/2017-05/msg00018.html
Wenn Sie dies haben, können Sie tun:
env
wird :lang:foo:--bar
in die Felder aufgeteilt lang
, foo
und --bar
. Es sucht PATH
für den Dolmetscher lang
, und dann rufen Sie es mit Argumenten --foo
, bar
sowie der Pfad zum Skript und das Skript Argumente.
Es gibt auch eine Funktion, mit der Sie den Namen des Skripts in der Mitte der Optionen übergeben können. Angenommen, Sie möchten ausführen lang -f <thecriptname> other-arg
, gefolgt von den verbleibenden Argumenten. Mit diesem Patch env
wird es folgendermaßen gemacht:
Das Feld ganz links, das äquivalent ist, {}
wird durch das erste folgende Argument ersetzt, das unter Hash-Bang-Aufruf der Skriptname ist. Dieses Argument wird dann entfernt.
Hier other-arg
könnte etwas von lang
oder vielleicht etwas von dem Skript verarbeitet werden.
Weitere Informationen finden Sie in den zahlreichen echo
Testfällen im Patch.
Ich habe das :
Zeichen gewählt, weil es ein vorhandenes Trennzeichen ist, das PATH
auf POSIX-Systemen verwendet wird. Da env
die PATH
Suche durchgeführt wird, ist es offensichtlich unwahrscheinlich, dass sie für ein Programm verwendet wird, dessen Name einen Doppelpunkt enthält. Die {}
Markierung stammt vom find
Dienstprogramm, mit dem das Einfügen eines Pfads in die -exec
Befehlszeile bezeichnet wird.