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:
envwird :lang:foo:--barin die Felder aufgeteilt lang, foound --bar. Es sucht PATHfür den Dolmetscher lang, und dann rufen Sie es mit Argumenten --foo, barsowie 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 envwird 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-argkönnte etwas von langoder vielleicht etwas von dem Skript verarbeitet werden.
Weitere Informationen finden Sie in den zahlreichen echoTestfällen im Patch.
Ich habe das :Zeichen gewählt, weil es ein vorhandenes Trennzeichen ist, das PATHauf POSIX-Systemen verwendet wird. Da envdie PATHSuche 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 findDienstprogramm, mit dem das Einfügen eines Pfads in die -execBefehlszeile bezeichnet wird.