Introducción a las variables de entorno
Ahora que entendemos las variables básicas, exploremos las variables de entorno. Las variables de entorno son variables que están disponibles para cualquier proceso hijo del shell. Esto significa que pueden ser accedidas por scripts y programas ejecutados desde ese shell.
-
Para ver todas las variables de entorno actuales, utiliza el comando env
:
env
Esto mostrará una larga lista de variables. No te preocupes si aún no entiendes todas ellas; cubriremos algunas de las más importantes más adelante.
-
Una de las variables de entorno más importantes es PATH
. Echemos un vistazo a ella:
echo $PATH
La variable PATH
enumera los directorios donde el sistema busca programas ejecutables. Cada directorio está separado por dos puntos (:
).
-
Ahora, creemos nuestra propia variable de entorno. Usamos el comando export
para crear una variable de entorno:
export MY_ENV_VAR="This is an environment variable"
El comando export
hace que la variable esté disponible para los procesos hijos. Esta es la diferencia clave entre las variables de shell y las variables de entorno.
-
Para ilustrar la diferencia, creemos un script de shell que intente acceder tanto a una variable de shell normal como a una variable de entorno:
echo '#!/bin/bash
echo "Shell variable: $my_var"
echo "Environment variable: $MY_ENV_VAR"' > test_vars.sh
Haz el script ejecutable:
chmod +x test_vars.sh
Ahora ejecuta el script:
./test_vars.sh
Deberías ver que la variable de entorno (MY_ENV_VAR
) es accesible, mientras que la variable de shell (my_var
) no lo es. Esto se debe a que my_var
no se exportó, por lo que los procesos hijos (como el script) no la conocen.
-
Para verificar que MY_ENV_VAR
es ahora una variable de entorno, podemos usar el comando env
nuevamente, pero esta vez filtraremos la salida usando grep
:
env | grep MY_ENV_VAR
Deberías ver tu nueva variable en la salida.
-
También puedes comprobar directamente el valor de tu nueva variable de entorno:
echo $MY_ENV_VAR
¡Excelente! Ahora has creado tu primera variable de entorno y has visto cómo se diferencia de una variable de shell. La diferencia clave es que las variables de entorno, creadas con export
, están disponibles para los procesos hijos, mientras que las variables de shell no lo están.
Las variables de entorno y las variables de shell tienen cada una su propio alcance. Cuando exportas una variable (por ejemplo, export MY_ENV_VAR="algo"
), se vuelve disponible para cualquier subproceso iniciado desde ese shell (por ejemplo, un script de shell ejecutado por ese mismo shell). Sin embargo, si abres una sesión de shell completamente separada, no hereda las variables de tu shell actual a menos que las establezcas específicamente en un archivo de inicio (como .zshrc
o .bashrc
).
En otras palabras:
- Una variable de shell normal solo es visible dentro de la sesión actual.
- Una variable exportada está disponible para los procesos hijos lanzados desde esa sesión.
- Una variable establecida en un archivo de inicio de shell (como
.zshrc
) se aplica a todas las nuevas sesiones de ese shell.
No puedes leer directamente las variables de otro usuario o de otro shell porque cada proceso mantiene su propio entorno. Si inicias un nuevo shell, obtiene una copia de las variables exportadas del padre, pero no las variables establecidas solo en el shell original sin export
.
Aprenderemos cómo establecer variables de entorno de forma permanente en los siguientes pasos.