En Linux (Ubuntu 11.04) in bash, ¿es posible establecer temporalmente una variable de entorno que solo será diferente de la variable normal durante la duración del script? Por ejemplo, en un script de shell, crear una aplicación que se guarde en el dispositivo portátil HOME configurando HOME de manera temporal en una carpeta en el directorio de trabajo actual y luego iniciando la aplicación.¿Cómo establecer una variable de entorno solo para la duración del script?
Respuesta
sólo hay que poner
export HOME=/blah/whatever
en el punto en el guión donde desea que el cambio suceda. Como cada proceso tiene su propio conjunto de variables de entorno, esta definición dejará de tener importancia automáticamente cuando finalice el script (y con ello la instancia de bash que tiene un entorno modificado).
Eso es engañosa. 'export' pasará la variable a subcapas, pero no controla el shell primario. Si está escribiendo un script que comienza con "#!/Bin/sh" o similar, CUALQUIER variable que establezca desaparecerá cuando el script salga. – brightlancer
@brightlancer, eso es cierto, pero no parece contradecir nada de lo que escribí. (Con la excepción de la posibilidad de que el script pueda iniciar un proceso en segundo plano, pero creo que está más allá del nivel de sofisticación del OP y solo confundiría). –
La exportación no es necesaria. Además, su respuesta solo funciona si su script invoca un intérprete (#!/Bin/sh o similar). Si su "guión" no funciona, entonces lo que le acaba de decir persistirá más allá del final de su guión. Es por eso que dije que su respuesta fue engañosa; podría ser correcta, podría no serlo, pero definitivamente tiene una parte que es innecesaria y confusa porque puede hacer que alguien piense que la "exportación" es el elemento necesario que estaba buscando. – brightlancer
env VAR=value myScript args ...
O 'VAR = value myScript args ...' – Rockallite
1. ¿Cómo es que 'PATH = $ PATH: XYZ echo $ PATH | grep XYZ' no tiene ninguna salida, sin embargo? 2. ¿Cuál es la diferencia entre usar y no usar 'env'? – qubodup
porque el shell expande la variable PATH ** antes ** de ejecutar el comando echo. Debes retrasar esa expansión. Una forma: 'PATH = $ PATH: XYZ sh -c 'echo $ PATH' | grep XYZ' - las comillas simples son la clave aquí –
VAR1=value1 VAR2=value2 myScript args ...
Lo he hecho varias veces para ejecutar 'vblank_mode = 0 glxgears'. Funciona, pero también dice 'vblank_mode = 0: command not found' después de ejecutar, mientras que anteponer' env' no causa esto. [probando ...] Aparentemente a zsh no le gusta (y todavía lo usa correctamente), pero bash está bien con eso. Creo que iré con el método 'env' a partir de ahora. –
- 1. Establecer variable global para la duración de una solicitud
- 2. C# establecer la variable de entorno
- 3. Establecer variables de entorno para un script en una variable de función bash local
- 4. Establecer una variable de entorno en javascript
- 5. cómo establecer la variable de entorno para el usuario raíz
- 6. Phing exec comando para establecer la variable de entorno
- 7. Cómo establecer una variable de entorno para un solo comando en CSH/tcsh
- 8. ¿Cómo establecer programáticamente una variable de entorno permanente en Linux?
- 9. ¿Cómo establecer la variable de entorno en el precomienzo en el script Upstart?
- 10. Establecer la variable de entorno para construir en hudson
- 11. NodeJS establecer la variable de entorno para el ejecutivo
- 12. ¿Cómo puedo establecer una variable de entorno de forma multiplataforma?
- 13. ¿Cómo establecer una variable de entorno en Java usando exec?
- 14. Shell fuera de rubí al establecer una variable de entorno
- 15. ¿Cómo establecer la variable de entorno PATH en el script CMake?
- 16. ¿Cómo establecer la variable de entorno en Netbeans?
- 17. Establecer la variable de entorno en script/acceso de shell en la aplicación Tomcat
- 18. Configuración de la variable de entorno en el script ant
- 19. Powershell: Configuración de una variable de entorno para un solo comando sólo
- 20. ¿Cómo establecer la variable de entorno o la propiedad del sistema en las pruebas de primavera?
- 21. ¿Cuál es la variable de entorno para AppData en el script del instalador de NSIS?
- 22. ¿Cómo establecer una variable de entorno mediante programación en Jenkins/Hudson?
- 23. Cómo establecer la variable de entorno Java JDK para Mac OS X 10.8 Mountain Lion
- 24. Capistrano: ¿Puedo establecer una variable de entorno para toda la sesión de tope?
- 25. Establecer una variable de entorno del sistema desde un archivo por lotes de Windows?
- 26. Hacer una variable de entorno sobrevivir ENDLOCAL
- 27. Establecer la variable de entorno en el script de shell no lo hace visible para el shell
- 28. Cómo exportar una variable de entorno del ámbito del sistema en bash
- 29. Variable de entorno del sistema Java
- 30. Manera estable de establecer la duración máxima para MediaStore.ACTION_VIDEO_CAPTURE
Sería más difícil si quería el ajuste a durar _beyond_ la duración de la secuencia de comandos – Nemo