Como posso definir a variável de ambiente para apenas um comando no fish shell?

46

No bash, posso fazer EDITOR=vim crontab -e . Posso obter efeito semelhante no shell de peixe?

    
por skalee 27.07.2010 / 03:25

4 respostas

26
begin; set -lx EDITOR vim; crontab -e; end
    
por 27.07.2010 / 03:58
68

Não veja porque isso não deve funcionar: env EDITOR=vim crontab -e
Isso ignora completamente o shell.

    
por 17.05.2013 / 15:44
10

Isso é da Documentação

SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".

Use o comando env.

env SOME_VAR=1 command

Você também pode declarar uma variável local em um bloco e isso não iria ignorar o shell

begin
  set -lx SOME_VAR 1
  command
end
    
por 02.03.2015 / 16:59
2

dependendo de uma definição da função be , isso pode falhar

begin
  set -lx RAILS_ENV staging
  be rails r "p ENV['RAILS_ENV']"
end

Para funcionar:

function be --description 'Runs bundle exec' --no-scope-shadowing
  bundle exec $argv
end

Por favor, veja a explicação da opção - no-scope-shadowing

-S or --no-scope-shadowing allows the function to access the variables of calling functions. Normally, any variables inside the function that have the same name as variables from the calling function are "shadowed", and their contents is independent of the calling function.

    
por 13.02.2017 / 03:18