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
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
-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.
set -lx date '12/04/2012'
begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
env SOME_VAR=1 command
No veo por qué esto no debería funcionar:
env EDITOR=vim crontab -e
eso evita el shell por completo.
fuente
env SOME_VAR=1 echo $SOME_VAR
Eso es de la documentación
Usa el comando env.
También puede declarar una variable local en un bloque y eso no pasaría por alto el shell
fuente
dependiendo de una definición de
be
función, esto puede fallarPara que funcione:
Por favor, vea la explicación de la opción --no-scope-shadowing
fuente