¿Cómo puedo configurar la variable de entorno para un solo comando en fish shell?


49

En bash, puedo hacer EDITOR=vim crontab -e. ¿Puedo obtener un efecto similar en Fish shell?

Respuestas:


27
begin; set -lx EDITOR vim; crontab -e; end

2
¿Hay alguna manera más fácil de hacer esto?
Milovan Zogovic

Curiosamente, esto no funciona para mí. Estoy llamando a un script de ruby, y ENV no capta la variable que estoy configurando:set -lx date '12/04/2012'
Duke

@Duke: A mí me funciona. begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
Dennis Williamson

10
Mientras tanto, esto se ha respondido en las Preguntas frecuentes de Fish: fishshell.com/docs/current/faq.html#faq-single-env
daños

2
Y lo que dice esa pregunta frecuente es esto:env SOME_VAR=1 command
BallpointBen

72

No veo por qué esto no debería funcionar: env EDITOR=vim crontab -e
eso evita el shell por completo.


3
Esto es mucho más fácil. El único problema es que omitir el caparazón no permite ningún comando de pez personalizado, que probablemente esté bloqueado en su memoria muscular.
JohnMetta

También lo vi en los documentos, pero ¿por qué no funciona lo siguiente? env SOME_VAR=1 echo $SOME_VAR
lmsurprenant

no importa, debería haberlo buscado: stackoverflow.com/questions/10938483/…
lmsurprenant

10

Eso es de la documentación

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

Usa el comando env.

env SOME_VAR=1 command

También puede declarar una variable local en un bloque y eso no pasaría por alto el shell

begin
  set -lx SOME_VAR 1
  command
end

2

dependiendo de una definición de befunción, esto puede fallar

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

Para que funcione:

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

Por favor, vea la explicación de la opción --no-scope-shadowing

-S o --no-scope-shadowing permite que la función acceda a las variables de las funciones de llamada. Normalmente, cualquier variable dentro de la función que tenga el mismo nombre que las variables de la función de llamada se "sombrea" y su contenido es independiente de la función de llamada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.