Las variables de entorno existen para mejorar y estandarizar su entorno de shell en sistemas Linux. Hay variables de entorno estándar que el sistema configura para usted, pero también puede configurar sus propias variables de entorno u, opcionalmente, cambiar las predeterminadas para satisfacer sus necesidades.
[ Descarga gratuita:hoja de referencia de comandos avanzados de Linux. ]
Empezando con el env
comando
Si desea ver sus variables de entorno, use el env
comando y busque las palabras en mayúsculas en el extremo izquierdo de la salida. Estas son sus variables de entorno y sus valores están a la derecha:
$ env
LS_COLORS=(long output)
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=rhel8t
XDG_SESSION_ID=5
USER=khess
SELINUX_ROLE_REQUESTED=
PWD=/home/khess
HOME=/home/khess
SSH_CLIENT=192.168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
TERM=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=khess
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
HISTSIZE=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env
He omitido la salida de LS_COLORS
variable porque es muy largo. Pruebe este comando en su sistema para ver cómo se ve la salida completa.
Muchas variables de entorno se configuran y luego se exportan desde /etc/profile
archivo y el /etc/bashrc
expediente. Hay una línea en /etc/profile
que dice:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Para realizar cambios permanentes en las variables de entorno de todas las cuentas nuevas, vaya a su /etc/skel
archivos, como .bashrc
, y cambiar los que ya hay o introducir los nuevos. Cuando crea nuevos usuarios, estos /etc/skel
los archivos se copiarán en el directorio de inicio del nuevo usuario.
Explorando niveles de shell (SHLVL
)
Para llamar al valor de una sola variable de entorno, ingrese el siguiente comando, usando SHLVL
(Nivel de carcasa) como ejemplo:
$ echo $SHLVL 1
Esta variable cambia según la cantidad de subcapas que tenga abiertas. Por ejemplo, ingrese bash
dos veces y luego emita el comando nuevamente:
$ bash
$ bash echo $SHLVL 3
Un nivel de capa de tres significa que tiene dos subcapas de profundidad, así que escriba exit
dos veces para volver a su caparazón normal.
[¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.]
Manipular tu PATH
variables
El PATH
La variable 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
ingresando el siguiente comando para agregar /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 ingresa en el .bashrc
expediente. Para hacer que el cambio sea permanente, ingrese el comando PATH=$PATH:/opt/bin
en el .bashrc
de su directorio de inicio archivo.
Cuando haces esto, estás creando un nuevo PATH
variable agregando un directorio al PATH
actual variable, $PATH
. Dos puntos (:
) separa PATH
entradas.
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 solo leyó y repitió el contenido de las variables de shell $PWD
y $USER
o $LOGNAME
, respectivamente. Para mi sorpresa, después de mirar el código fuente, no es así. Tal vez debería reescribirlos para hacer precisamente eso. No hay motivo para agregar varias bibliotecas y casi 400 líneas de código C para mostrar el directorio de trabajo. Puedes simplemente leer $PWD
y repetir eso en la pantalla (stdout). Lo mismo ocurre con whoami
con $USER
o $LOGNAME
.
Si desea echar un vistazo al código fuente por sí mismo, está en GitHub y en otros lugares. Si encuentra que estos programas (u otros) usan variables de shell, me encantaría saberlo. Es cierto que no soy tan bueno leyendo el código fuente de C, por lo que muy bien podrían usar variables de shell y nunca lo sabría. Simplemente no parecían entender por lo que leí y pude entender.
Tocando el $SHELL
juego
En esta última descripción general de las variables de entorno, quiero mostrarle cómo $SHELL
variable viene muy bien. No tiene que permanecer en su shell predeterminado, que probablemente sea Bash. Puede ingresar y trabajar en cualquier shell que esté instalado en el sistema. Para averiguar qué shells están instalados en su sistema, use el siguiente comando:
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
Todos esos son en realidad Bash, así que no te emociones. Si tiene suerte, es posible que también vea entradas para /bin/tcsh
, /bin/csh
, /bin/mksh
, /bin/ksh
y /bin/rksh
.
Puede usar cualquiera de estos caparazones y tener diferentes cosas en cada uno si así lo desea. Pero supongamos que es un administrador de Solaris y desea utilizar el shell de Korn. Puede cambiar su shell predeterminado a /bin/ksh
usando el chsh
comando:
$ chsh Changing shell for khess. New shell [/bin/bash]: /bin/ksh Password: Shell changed.
Ahora, si escribe echo $SHELL
, la respuesta será /bin/bash
, por lo que debe cerrar sesión y volver a iniciar sesión para ver el cambio. Una vez que cierre sesión e inicie sesión, recibirá una respuesta diferente a echo $SHELL
.
Puede ingresar otros shells y echo $SHELL
debería informe su shell actual y $SHLVL
, que te mantendrá informado sobre cuántas conchas tienes de profundidad.
Configurar sus propias variables de entorno
Puede configurar sus propias variables en la línea de comando por sesión, o hacerlas permanentes colocándolas en ~/.bashrc
archivo, ~/.profile
, o cualquier archivo de inicio que use para su shell predeterminado. En la línea de comando, ingrese su variable de entorno y su valor como lo hizo anteriormente al cambiar el PATH
variables.
Conclusión
Las variables de shell o de entorno son útiles para usuarios, administradores de sistemas y programadores por igual. Son útiles en la línea de comandos y en scripts. Los he usado a lo largo de los años para muchos propósitos diferentes, y aunque algunos de ellos son probablemente un poco poco convencionales, funcionaron y todavía lo hacen. Cree los suyos propios o utilice los que le proporcione el sistema y las aplicaciones instaladas. Realmente pueden enriquecer su experiencia de usuario de Linux.
Como nota al margen sobre variables y shells, ¿alguien piensa que aquellos que programan en JSON solo deberían poder usar Bourne Shell? Discutir.