Réponses:
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
Je ne vois pas pourquoi cela ne fonctionnerait pas:
env EDITOR=vim crontab -e
cela contourne complètement le shell.
env SOME_VAR=1 echo $SOME_VAR
C'est de la documentation
SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".
Utilisez la commande env.
env SOME_VAR=1 command
Vous pouvez également déclarer une variable locale dans un bloc et ne pas contourner le shell
begin
set -lx SOME_VAR 1
command
end
en fonction d'une définition de be
fonction, cela peut échouer
begin
set -lx RAILS_ENV staging
be rails r "p ENV['RAILS_ENV']"
end
Pour que cela fonctionne:
function be --description 'Runs bundle exec' --no-scope-shadowing
bundle exec $argv
end
S'il vous plaît, voir l'explication de l' option --no-scope-shadowing
-S ou --no-scope-shadowing permet à la fonction d'accéder aux variables des fonctions d'appel. Normalement, toutes les variables de la fonction qui portent le même nom que les variables de la fonction appelante sont "masquées" et leur contenu est indépendant de la fonction appelante.