Seltsamerweise funktioniert das bei mir nicht. Ich rufe ein Ruby-Skript auf und ENV nimmt die Variable, die ich einstelle, nicht auf:set -lx date '12/04/2012'
Duke
@Duke: Es funktioniert bei mir. begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
Das ist so viel einfacher. Das einzige Problem ist, dass das Umgehen der Shell keine benutzerdefinierten Fischbefehle zulässt, die wahrscheinlich in Ihrem Muskelgedächtnis gespeichert sind.
JohnMetta
Ich habe das auch in den Dokumenten gesehen, aber warum funktioniert dann das Folgende nicht? env SOME_VAR=1 echo $SOME_VAR
-S oder --no-scope-shadowing ermöglicht der Funktion den Zugriff auf die Variablen aufrufender Funktionen. Normalerweise sind alle Variablen in der Funktion, die denselben Namen wie Variablen aus der aufrufenden Funktion haben, "schattiert" und ihr Inhalt ist unabhängig von der aufrufenden Funktion.
set -lx date '12/04/2012'
begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
env SOME_VAR=1 command
Verstehe nicht, warum das nicht funktionieren sollte:
env EDITOR=vim crontab -e
Das umgeht die Shell komplett.
quelle
env SOME_VAR=1 echo $SOME_VAR
Das ist aus der Dokumentation
Verwenden Sie den Befehl env.
Sie können auch eine lokale Variable in einem Block deklarieren, die die Shell nicht umgeht
quelle
be
Dies kann je nach Funktionsdefinition fehlschlagenDamit es funktioniert:
Weitere Informationen finden Sie in der Erläuterung der Option --no-scope-shadowing
quelle