Estoy ejecutando Ubuntu 11.04. Utilizo el terminal para iniciar una sesión bash, y quiero agregar una variable de entorno:
$r@hajt:~$ env THEVAR=/example
Pero no está funcionando. Muestra todas las variables con Thevar siendo el último, pero otra llamada a env
no muestra THEVAR
más- env | grep THEVAR
vuelve nada.
Del mismo modo, los scripts con export ( export THEVAR=/example
) u otras asignaciones de variables ( THEVAR=/example
) no agregan la variable de entorno.
Sé que estoy haciendo algo mal, sé que debería ser algo simple, pero no puedo encontrar qué.
ACTUALIZACIÓN: El verdadero significado de mi pregunta fue esta: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(De todos modos, elegiré la respuesta más votada y dejaré el título editado, eso no era lo que estaba preguntando)
env
ejecuta un programa en un entorno modificado, luego descarta todos los cambios.
THEVAR=/example
?Respuestas:
Para establecer la variable solo para el shell actual:
Para configurarlo para el shell actual y todos los procesos iniciados desde el shell actual:
Para configurarlo permanentemente para todas las futuras sesiones de bash, agregue dicha línea a su
.bashrc
archivo en su$HOME
directorio.Para configurarlo de forma permanente y en todo el sistema (todos los usuarios, todos los procesos) agregue la variable de conjunto en / etc / environment:
Este archivo solo acepta asignaciones variables como:
No use la
export
palabra clave aquí.Debe cerrar sesión del usuario actual e iniciar sesión nuevamente para que se produzcan cambios en las variables de entorno.
fuente
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Para establecer una variable de entorno una vez, use el
export
comando en el indicador, no en un script de shell:La variable se establecerá para el resto de la sesión de shell o hasta que se desactive.
Para establecer una variable de entorno cada vez, use el
export
comando en el.bashrc
archivo (o el archivo de inicialización apropiado para su shell).Para establecer una variable de entorno a partir de un script, use el
export
comando en el script y luegosource
el script. Si ejecuta el script, no funcionará.Para obtener una explicación de la diferencia entre el abastecimiento y la ejecución, consulte esta respuesta: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- bash-script / 176788 # 176788
fuente
Para agregar permanentemente una nueva variable de entorno en Ubuntu (probado solo en 14.04), utilice los siguientes pasos:
sudo -H gedit /etc/environment
por ejemplo, si desea agregar
FOO=bar
, simplemente escribaFOO=bar
en una nueva líneafuente
sudo gedit
(Ver askubuntu.com/questions/270006/… ) ychmod 777
. Esto último nunca debe hacerse en un archivo de configuración del sistema.if
otest
)Foo="bar"
?Para que los cambios en el entorno / var persistan después de que se haya completado el script, debe usar
source ./script.sh
la notación abreviada para la fuente, ".", Como. ./script.sh
Source ejecutará los comandos en el script como si los hubiera escrito ... así que cambia algunos aspectos del script, como salir ... así que si su script verifica algo y decide salir si es falso, por ejemplo, mediante una llamada
exit 0
, terminará su sesión actual de terminal / shell.fuente
Si está haciendo cosas a través de un script, una forma fácil de configurar la variable de entorno de forma permanente se encuentra debajo de la declaración en su script,
Si necesita evaluar expresiones como pwd, puede usar esto, por ejemplo,
fuente
Sé que es bastante tarde, pero si desea agregar una variable de entorno para todos los usuarios (por ejemplo, uso de JAVA), puede hacer lo siguiente:
1) Abra
/etc/bash.bashrc
usando nano (puede usar cualquier editor, no prefiero VIM ya que es lo peor cuando se trata de facilidad de uso, nada personal).2) Añadir al archivo:
export VAR=path export PATH=$PATH:/bin
3) (Mejor si puede rebotar la caja) - o simplemente abra una nueva sesión SSH y confirme con el comando `env '.PERO SI desea que cada usuario tenga una configuración separada para esto, debe realizar un cambio (con secuencia de comandos) en el
.bashrc
archivo~/.bashrc
(o/home/$USER/
si es nuevo en sistemas Linux)fuente