Odpowiedzi:
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
Nie rozumiem, dlaczego to nie powinno działać:
env EDITOR=vim crontab -e
całkowicie omija powłokę.
env SOME_VAR=1 echo $SOME_VAR
To z Dokumentacji
SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".
Użyj polecenia env.
env SOME_VAR=1 command
Możesz także zadeklarować zmienną lokalną w bloku, która nie pomija powłoki
begin
set -lx SOME_VAR 1
command
end
w zależności od definicji be
funkcji może się to nie powieść
begin
set -lx RAILS_ENV staging
be rails r "p ENV['RAILS_ENV']"
end
Aby to działało:
function be --description 'Runs bundle exec' --no-scope-shadowing
bundle exec $argv
end
Zobacz wyjaśnienie opcji --no-scope-shadowing
-S lub --no-scope-shadowing pozwala tej funkcji na dostęp do zmiennych wywoływanych funkcji. Zwykle wszelkie zmienne wewnątrz funkcji, które mają takie same nazwy jak zmienne z funkcji wywołującej, są „zasłaniane”, a ich zawartość jest niezależna od funkcji wywołującej.