Las variables de entorno existen para mejorar y estandarizar su entorno de shell en los sistemas Linux. Hay variables de entorno estándar que el sistema establece por ti, pero también puedes establecer tus propias variables de entorno, u opcionalmente cambiar las predeterminadas para satisfacer tus necesidades.
Comenzando con el comando env
Si quieres ver tus variables de entorno, utiliza el comando env
y busca las palabras en mayúsculas en el extremo izquierdo de la salida. Estas son tus variables de entorno, y sus valores están a la derecha:
He omitido la salida de la variable LS_COLORS
porque es muy larga. Prueba este comando en tu sistema para ver cómo es la salida completa.
Muchas variables de entorno se establecen y luego se exportan desde el archivo /etc/profile
y el archivo /etc/bashrc
. Hay una línea en /etc/profile
que dice:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Para hacer cambios permanentes en las variables de entorno de todas las cuentas nuevas, ve a tus archivos /etc/skel
, como .bashrc
, y cambia las que ya están o introduce las nuevas. Cuando crees nuevos usuarios, estos archivos /etc/skel
se copiarán en el directorio principal del nuevo usuario.
Explorando los niveles del shell (SHLVL)
Para llamar al valor de una sola variable de entorno, introduzca el siguiente comando, utilizando SHLVL
(Nivel del Shell) como ejemplo:
$ echo $SHLVL 1
Esta variable cambia dependiendo de cuántos subshells tenga abiertos. Por ejemplo, introduce bash
dos veces y luego emite el comando de nuevo:
$ bash $ bash echo $SHLVL 3
Un nivel de shell de tres significa que estás a dos subshells de profundidad, así que escribe exit
dos veces para volver a tu shell normal.
Manipulando tu variable PATH
La variable PATH
contiene la ruta de búsqueda para ejecutar comandos y scripts. Para ver tu PATH
, introduce:
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Cambia temporalmente tu PATH
introduciendo el siguiente comando para añadir /opt/bin
:
$ PATH=$PATH:/opt/bin$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
El cambio es temporal para la sesión actual. No es permanente porque no se ha introducido en el archivo .bashrc
. Para que el cambio sea permanente, introduce el comando PATH=$PATH:/opt/bin
en el archivo .bashrc
de tu directorio principal.
Cuando haces esto, estás creando una nueva variable PATH
añadiendo un directorio a la variable actual PATH
$PATH
. Unos dos puntos (:
) separan las entradas PATH
.
Desentrañando $USER, $PWD, y $LOGNAME
Tenía una teoría que creo que ha sido disipada por mi propio bien. Mi teoría era que los comandos pwd
y whoami
probablemente sólo leían y se hacían eco del contenido de las variables del shell $PWD
y $USER
o $LOGNAME
, respectivamente. Para mi sorpresa, tras mirar el código fuente, no lo hacen. Tal vez debería reescribirlos para que hagan precisamente eso. No hay razón para añadir múltiples librerías y casi 400 líneas de código C para mostrar el directorio de trabajo. Puedes simplemente leer $PWD
y hacer eco de eso en la pantalla (stdout). Lo mismo ocurre con whoami
con $USER
o $LOGNAME
.
Si quieres echar un vistazo al código fuente por ti mismo, está en GitHub y otros lugares. Si encuentras que estos programas (u otros) sí usan variables de shell, me encantaría saberlo. Hay que admitir que no soy muy bueno leyendo el código fuente en C, así que bien podrían usar variables de shell y yo nunca lo sabría. Sólo que no me pareció que lo hicieran por lo que leí y pude entender.
Jugando al juego de $SHELL
En este último repaso a las variables de entorno, quiero mostrarte cómo la variable $SHELL
es muy útil. No tienes que quedarte en tu shell por defecto, que probablemente sea Bash. Puedes entrar y trabajar en cualquier shell que esté instalado en el sistema. Para saber qué shells están instalados en tu sistema, utiliza el siguiente comando:
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
Puedes utilizar cualquiera de estos shells y hacer cosas diferentes en cada uno si te apetece. Pero, digamos que eres un administrador de Solaris y quieres usar el shell Korn. Puedes cambiar tu shell por defecto a /bin/ksh
usando el comando chsh
:
$ chsh Changing shell for khess. New shell : /bin/ksh Password: Shell changed.
Ahora, si escribes echo $SHELL
, la respuesta será /bin/bash
, por lo que tienes que salir y volver a entrar para ver el cambio. Una vez que salgas y entres, recibirás una respuesta diferente a echo $SHELL
.
Puedes entrar en otros shells y echo $SHELL
debería informar de tu shell actual y $SHLVL
, lo que te mantendrá orientado en cuanto a cuántos shells de profundidad tienes.
Cómo establecer tus propias variables de entorno
Puedes establecer tus propias variables en la línea de comandos por sesión, o hacerlas permanentes colocándolas en el archivo ~/.bashrc
~/.profile
, o cualquier archivo de inicio que utilices para tu shell por defecto. En la línea de comandos, introduzca su variable de entorno y su valor como lo hizo anteriormente al cambiar la variable PATH
.
Resumiendo
Las variables de entorno o del shell son útiles para los usuarios, administradores de sistemas y programadores por igual. Son útiles en la línea de comandos y en los scripts. Las he utilizado a lo largo de los años para muchos propósitos diferentes, y aunque algunas de ellas son probablemente poco convencionales, funcionaron y todavía lo hacen. Crea las tuyas propias o utiliza las que te da el sistema y las aplicaciones instaladas. Realmente pueden enriquecer tu experiencia como usuario de Linux.
Como nota al margen de las variables y los shells, ¿alguien cree que a los que programan en JSON sólo se les debería permitir usar el Bourne Shell? Discutidlo.
0 comentarios