Variables de entorno en Linux

Published:

1. ¿Qué son las variables de entorno en Linux?

Las variables de entorno son valores dinámicos que afectan los programas o procesos que se ejecutan en un servidor Linux en este caso. Las variables de entorno se pueden crear, editar, guardar y eliminar.

Las variables de entorno de Linux, son marcadores de posición para la información almacenada dentro del sistema que pasa datos a los programas iniciados en shells (intérpretes de comando) o sub-shells.

El entorno se implementa como cadenas que representan pares clave-valor. Si se transmiten múltiples valores, estos suelen separarse mediante símbolos de dos puntos (:). Normalmente, cada par tendrá un aspecto similar a este:

KEY=value1:value2:...

Si el valor contiene un espacio en blanco significativo, se utilizan comillas:

KEY="value with spaces"

Las claves en estos casos son variables. Pueden ser de dos tipos: variables de entorno o variables de shell.

Las variables de entorno son variables definidas para el shell actual y heredadas por cualquier shell o proceso secundario. Las variables de entorno se utilizan para transmitir información a procesos que se producen desde el shell.

Por lo general se acostumbra a usar variables utilizando letras en mayúsculas. Esto ayuda a los usuarios a distinguir las variables de entorno en otros contextos.

Las variables de entorno de Linux pueden ser:

  • globales
  • locales

Las variables de entorno global son visibles desde una sesión de shell y en cualquier proceso secundario que genera el shell. En cambio, las variables locales solo pueden estar disponibles en el shell en el que se crean.

2. Impresión de variables de entorno y de shell

Podemos ver una lista de todas nuestras variables de entorno usando los comandos env o printenv.

La diferencia entre los dos comandos es solamente en su funcionalidad más específica. Por ejemplo, con printenv, se pueden solicitar los valores de variables individuales:

printenv SHELL

Por otro lado, env le permite modificar el entorno en que se ejecutan los programas transmitiendo un conjunto de definiciones de variables a un comando como el siguiente:

env VAR1="value" command_to_run command_options

¿Cómo vemos las variables de shell?

Si escribimos el comando set sin ningún otro parámetro, obtendremos una lista de todas las variables de shell, variables de entorno, variables locales y funciones de shell:

set

Y como a veces es muy largo el resultado podemos usar

set | less

Y movernos con las fechas para arriba y para abajo.

3. Variables frecuentes de entorno y de shell

SHELL: Describe el shell que interpretará cualquier comando que ingrese. En la mayoría de los casos, será bash de forma predeterminada, pero se pueden establecer otros valores si prefiere otras opciones.
TERM: Especifica el tipo de terminal a emular cuando se ejecuta el shell. Se pueden emular diferentes terminales de hardware para diferentes requisitos de funcionamiento. Sin embargo, generalmente no tendrá que preocuparse por esto.
USER: El usuario que inició sesión actualmente.
PWD: El directorio actual de trabajo.
OLDPWD: El directorio anterior de trabajo. Esto se mantiene en el shell para volver a su directorio anterior ejecutando cd -.
LS_COLORS: Define los códigos de color que se utilizan para añadir de forma opcional un resultado de color al comando ls. Esto se utiliza para distinguir diferentes tipos de archivos y proporcionar más información al usuario de forma rápida.
MAIL: La ruta al buzón del usuario actual.
PATH: Una lista de directorios que el sistema comprobará cuando busque comandos. Cuando un usuario escriba un comando, el sistema comprobará los directorios en este orden para el ejecutable.
LANG: Las configuraciones actuales de idioma y localización, incluida la codificación de caracteres.
HOME: El directorio principal del usuario actual.
_: El comando más reciente ejecutado anteriormente.

4- Variables de shell más comunes:

BASHOPTS: La lista de opciones que se utilizaron cuando se ejecutó bash. Esto puede ser útil para averiguar si el entorno de shell funcionará de la forma deseada.
BASH_VERSION: La versión de bash que se está ejecutando, en un formato que los usuarios puedan leer.
BASH_VERSINFO: La versión de bash, en un resultado que un equipo pueda leer.
COLUMNS: El número de ancho de columnas que se utilizan para generar el resultado en la pantalla.
DIRSTACK: La pila de directorios que están disponibles con los comandos pushd y popd.
HISTFILESIZE: La cantidad de líneas del historial de comandos que se almacenan en un archivo.
HISTSIZE: La cantidad de líneas del historial de comandos que se permiten en la memoria.
HOSTNAME: El nombre de host de la computadora en este momento.
IFS: El separador de campo interno para separar las entradas en la línea de comandos. De forma predeterminada, es un espacio.
PS1: La definición de la entrada del comando principal. Esto se utiliza para definir cómo se ve la entrada de la línea de comandos cuando se inicia una sesión de shell. PS2 se utiliza para declarar las entradas de la línea de comandos secundarias para cuando un comando se extiende a varias líneas.
SHELLOPTS: Opciones de shell que se pueden configurar con la opción set.
UID: El UID del usuario actual.

5. Creación de variables de shell

Solo necesitamos especificar un nombre y un valor. Ejemplo:

VAR1='NKSistemas!'

Probamos que funcione, en el caso de printenv no deberíamos ver resultado.

printevn | grep VAR1
echo $VAR1

NOTA: Esta variable quedará en la shell actual y se eliminará al cerrar la sesión del usuario.

6. Creación de variables de entorno

Ahora vamos a convertir nuestra variable de shell en una variable de entorno. Podemos hacer esto exportando la variable. El comando para hacerlo se denomina correctamente:

export VAR1

Para verificar que el cambio surtió efecto hacemos:

printenv | grep VAR1

7. Degradación y eliminación de variables

Como aún tenemos nuestra variable VAR1, y está definida como una variable de entorno, la vamos a convertir en una variable de shell escribiendo, usando el comando export -n

export -n VAR1

Ya no es una variable de entorno:

printenv | grep VAR1

Pero, aún es una variable de shell:

set | grep VAR1

Si queremos limpiar una variable, de shell o de entorno, podemos hacerlo con el comando unset:

unset VAR1

Podemos verificar que ya no está configurada:

echo $VAR1

No se genera ningún resultado porque la variable ya no existe.

Otra forma de eliminar la variable es haciendo

export VAR1=

8- ¿Cómo configuramos una variable de entorno permanente?

Tendremos que dejar las variables en determinadas ubicaciones, se pueden hacer para determinados usuarios o para todos los usuarios del sistema.

8.1- Para todos los usuarios:

/etc/profile

8.2- Para un usuario específico:

~/.bashrc

~/ : Se refiere al home directory del usuario, por ejemplo, para el usuario root: ~/ equivale a /root/

Si tenemos el archivo: /etc/environment en nuestro sistema operativo Linux, será el sitio ideal donde ubicar las variables de entorno permanentes, que estarán disponibles para todos los usuarios.

nano /etc/environment

Pegamos

VAR1='NKSistemas!'

Debemos recargar la configuración ya sea para un usuario o para todos.

source /etc/environment
o
source ~/.bashrc

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles