Antworten:
begin; set -lx EDITOR vim; crontab -e; end
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.
env SOME_VAR=1 echo $SOME_VAR
Das ist aus der Dokumentation
SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".
Verwenden Sie den Befehl env.
env SOME_VAR=1 command
Sie können auch eine lokale Variable in einem Block deklarieren, die die Shell nicht umgeht
begin
set -lx SOME_VAR 1
command
end
be
Dies kann je nach Funktionsdefinition fehlschlagen
begin
set -lx RAILS_ENV staging
be rails r "p ENV['RAILS_ENV']"
end
Damit es funktioniert:
function be --description 'Runs bundle exec' --no-scope-shadowing
bundle exec $argv
end
Weitere Informationen finden Sie in der Erläuterung der Option --no-scope-shadowing
-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.