LINUX

Establecer y enumerar variables de entorno en Linux

establecer la variable de entorno en linux

En los sistemas basados ​​en Linux, puede establecer valores dinámicos con nombre como variables de entorno. Estos valores se almacenan dentro del sistema y son utilizados por aplicaciones de línea de comandos. En pocas palabras, una variable de entorno es una variable con un nombre y un valor asociado. Una variable es un símbolo, una letra o una palabra como «x» o «y» que representa un valor.

La variable de entorno puede almacenar información sobre el editor de texto o navegador predeterminado, la ruta a los archivos ejecutables, etc.

Una variable de entorno está disponible globalmente, en un programa y sus programas secundarios. Una variable de shell solo está disponible en el shell actual.

En este tutorial, explicaremos cómo enumerar y configurar las variables de entorno y shell.

Variables de entorno

Las variables de entorno son variables que están disponibles en todo el sistema y son heredadas por todos los procesos secundarios y shells generados.

Las variables de entorno se implementan como cadenas que representan pares clave-valor. Si se pasan varios valores, normalmente están separados por dos puntos (:). Cada par generalmente se verá así:

KEY=value1:value2:value3

Los nombres de las variables distinguen entre mayúsculas y minúsculas y normalmente se utilizan en mayúsculas (MYVAR1, MYVAR2 …)

Si el valor contiene espacios en blanco, se utilizan citas:

KEY="value with spaces"

Variables de Shell

Las variables de shell son variables que están contenidas exclusivamente dentro del shell en el que se establecieron o definieron. Cada shell, como zsh y bash, tiene su propio conjunto de variables de shell internas. Por lo general, se utilizan para realizar un seguimiento de datos efímeros, como el directorio de trabajo actual. El uso es el mismo que con las variables de entorno global.

Para hacer que una variable de shell esté disponible como variable de entorno, use export MYVAR:

$ export MYVAR=linoxide.com
$ echo $MYVAR
linoxide.com
$ env | grep MYVAR
MYVAR=linoxide.com

Variables ambientales y de la carcasa comunes

Algunas variables ambientales y de shell son muy útiles y se hace referencia a ellas con bastante frecuencia. Aquí hay algunas variables ambientales comunes con las que se encontrará:

TÉRMINO Esto especifica el tipo de terminal a emular cuando se ejecuta el shell. Se pueden emular diferentes terminales de hardware para diferentes requisitos operativos. Sin embargo, por lo general, no tendrá que preocuparse por esto.
USUARIO El usuario que ha iniciado sesión actualmente.
PWD El directorio de trabajo actual.
OLDPWD El directorio de trabajo anterior. Esto lo mantiene el shell para volver a su directorio anterior ejecutando cd -.
LS_COLORS Esto define códigos de color que se utilizan para agregar opcionalmente salida de color al comando ls. Se utiliza para distinguir diferentes tipos de archivos y proporcionar más información al usuario de un vistazo.
CORREO La ruta al buzón del usuario actual.
CAMINO Una lista de directorios que el sistema comprobará cuando busque comandos. Cuando un usuario escribe un comando, el sistema verificará los directorios en este orden para el ejecutable.
LANG La configuración actual de idioma y localización, incluida la codificación de caracteres.
HOGAR El directorio de inicio del usuario actual.
_ El comando más reciente ejecutado anteriormente.

Además de estas variables ambientales, algunas variables de shell que verá a menudo son:

BASHOPTS La lista de opciones que se usaron cuando se ejecutó bash. Esto puede resultar útil para averiguar si el entorno de shell funcionará de la forma que usted desea.
BASH_VERSION La versión de bash que se está ejecutando, en forma legible por humanos.
BASH_VERSINFO La versión de bash, en formato legible por máquina.
COLUMNAS El número de columnas de ancho que se utilizan para dibujar la salida en la pantalla.
DIRSTACK La pila de directorios que están disponibles con los comandos pushd y popd.
HISTFILESIZE Número de líneas del historial de comandos almacenadas en un archivo.
HISTSIZE Número de líneas de historial de comandos permitidas en la memoria.
NOMBRE DE ANFITRIÓN El nombre de host de la computadora en este momento.
IFS El separador de campo interno para separar la entrada en la línea de comando. Por defecto, este es un espacio.
PS1 La definición del símbolo del sistema principal. Esto se usa para definir cómo se ve su mensaje cuando inicia una sesión de shell. La PS2 se utiliza para declarar avisos secundarios cuando un comando abarca varias líneas.
COMPRAS Opciones de shell que se pueden configurar con la opción set.
UID El UID del usuario actual.

Lista de variables de entorno y shell

Hay varios comandos disponibles que le permiten enumerar las variables de entorno en Linux:

env: el comando le permite ejecutar otro programa en un entorno personalizado sin modificar el actual. Cuando se usa sin un argumento, imprimirá una lista de las variables de entorno actuales.
printenv: el comando imprime todas o las variables de entorno especificadas.
set: el comando establece o desarma las variables de shell. Cuando se usa sin un argumento, imprimirá una lista de todas las variables, incluidas las variables de entorno y de shell, y las funciones de shell.

En su estado predeterminado, env y printenv deberían funcionar exactamente igual:

$ printenv 
SSH_CONNECTION=10.0.2.2 37182 10.0.2.15 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
XDG_SESSION_ID=5
USER=vagrant
MYVAR=linoxide.com
PWD=/home/vagrant
HOME=/home/vagrant
SSH_CLIENT=10.0.2.2 37182 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/vagrant
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LOGNAME=vagrant
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv

La diferencia entre los comandos env y ‘printenv’ solo es aparente en su funcionalidad más específica. Por ejemplo, con ‘printenv’, puede solicitar los valores de variables individuales:

$ printenv SHELL
/bin/bash
$ printenv HOME
/home/vagrant
$ printenv MYVAR
linoxide.com

El comando env le permite modificar el entorno en el que se ejecutan los programas, pasando un conjunto de variables a un comando:

env MYVAR=linoxide.com command_to_run command_options

Los comandos printenv y env imprimen solo las variables de entorno. Si desea obtener una lista de todas las variables, incluidas las variables de entorno y de shell, y las funciones de shell, puede usar el comando set:

$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="4" [2]="20" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.4.20(1)-release'
COLUMNS=140
DIRSTACK=()
EUID=1000
GROUPS=()
HISTCONTROL=ignoreboth
HISTFILE=/home/vagrant/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000
HOME=/home/vagrant
HOSTNAME=ubuntu-bionic
HOSTTYPE=x86_64
IFS=$' tn'
LANG=C.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
LINES=35
LOGNAME=vagrant
.....

El comando mostrará una lista grande de todas las variables, por lo que probablemente desee canalizar la salida al comando less.

set | less

Establecer variables de entorno y shell

Los comandos disponibles para establecer variables de entorno en Linux son:

set: el comando establece o desarma las variables de shell. Cuando se usa sin un argumento, imprimirá una lista de todas las variables, incluidas las variables de entorno y de shell, y las funciones de shell.
unset: el comando elimina las variables de entorno y de shell.
exportar: el comando establece las variables de entorno.

Para comprender mejor la diferencia entre las variables de shell y ambientales, comenzaremos con la configuración de variables de shell y luego pasaremos a las variables de entorno.

Comenzaremos definiendo una variable de shell dentro de nuestra sesión actual. Puede verificar que la variable está configurada usando echo $ MYVAR

$ MYVAR=Linoxide
$ echo $MYVAR
Linoxide

Use el comando printenv para verificar si esta variable es una variable de entorno o no:

$ printenv MYVAR

No se debe devolver ningún resultado. Esto significa que la variable MYVAR no es una variable de entorno.

El comando de exportación se utiliza para establecer variables de entorno.

Para crear una variable de entorno, simplemente exporte la variable de shell como una variable de entorno:

$ export MYVAR

Puede verificar esto ejecutando:

$ printenv MYVAR
Linoxide

También puede establecer variables de entorno en una sola línea:

$ export MYNEWVAR="My New Variable"

Las variables de entorno creadas de esta manera solo están disponibles para la sesión actual. Si abre un nuevo shell o si cierra la sesión, se perderán todas las variables.

También podemos revertir una variable de entorno a una variable de shell, o incluso eliminarla por completo (desarmarla):

Nuestra variable MYVAR se define como una variable ambiental. Podemos volver a convertirlo en una variable de shell escribiendo:

$ export -n MYVAR

Ya no es una variable de entorno, sin embargo, sigue siendo una variable de shell.

Si queremos desarmar completamente una variable, ya sea de shell o ambiental, podemos hacerlo con el comando unset:

$ unset MYVAR

Podemos verificar que ya no está configurado:

$ echo $MYVAR

No se devuelve nada porque la variable no se ha establecido.

Variables de entorno persistentes

Ya hemos mencionado que muchos programas usan variables ambientales para decidir los detalles de cómo operar. No queremos tener que configurar variables importantes cada vez que iniciamos una nueva sesión de shell,
El shell bash lee diferentes archivos de configuración dependiendo de cómo se inicie la sesión.
Una sesión de shell interactiva es una sesión de shell que se adjunta a un terminal. Una sesión de shell no interactiva es aquella que no está conectada a una sesión de terminal.

Una distinción entre las diferentes sesiones es si el shell se genera como una sesión de «inicio de sesión» o «sin inicio de sesión».

En la mayoría de las distribuciones de Linux, cuando inicia una nueva sesión, las variables de entorno se leen de los siguientes archivos:

/ etc / environment – Utilice este archivo para configurar variables de entorno para todo el sistema.

/ etc / profile – Las variables establecidas en este archivo se cargan cada vez que se ingresa a un shell de inicio de sesión de bash.

~ / .bashrc – Archivos de configuración específicos de shell por usuario. Por ejemplo, si está utilizando Bash, puede declarar las variables allí.

Para cargar las nuevas variables de entorno en la sesión de shell actual, use el comando de origen:

$ source ~/.bashrc

Si necesita establecer variables para todo el sistema, es posible que desee pensar en agregarlas a / etc / profile, /etc/bash.bashrc, o / etc / environment.

Conclusión

En este tutorial, hemos aprendido cómo establecer y enumerar las variables de entorno y shell. Estas variables siempre están presentes en sus sesiones de shell y pueden ser muy útiles para muchos programas. Hay muchos otros escenarios más mundanos, pero más comunes, en los que necesitará leer o alterar el entorno de su sistema. Si tiene alguna pregunta, no dude en dejarla en los comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar