Una variable es un identificador o un nombre al que se le puede asignar un valor. Estos valores pueden ser leídos por el shell y otros comandos.
—> Asignamos un valor a una variable usando el nombre de la variable=valor
—> Importante recordar que las variables distinguen entre mayúsculas y minúsculas.
—> Al igual que los argumentos que se usan con los comandos en Linux, debemos usar las comillas simples o dobles cuando se incluyen caracteres especiales en el valor que asignamos a la variable.
En este artículo:
Podemos crear variables locales y variables de entorno.
Tradicionalmente (aunque no es una regla), se usan las minúsculas para las variables locales, y las mayúsculas para las variables de entorno.
Hay varias formas de mostrar todas las variables en Linux.
Podemos mostrar todas las variables del sistema con el comando set.(mostraremos las variables locales y las variables de entorno)
Tenemos varios comandos para mostrar solamente las variables de entorno:
En la siguiente captura vemos el resultado que arrojará cualquiera de los anteriores comandos.
Y el resultado con printenv:
A excepción del comando env, que mostrará las variables de entorno sin “declare -x“:
Podemos crear una variable local asignando un valor a una variable usando el nombre de la variable=valor.
por ejemplo:
VARIABLE1=HOLA1
Esta variable es local. Solo se podrá usar en el shell en el que fue creada. Si cambiamos de shell, o también si cambiamos de usuario, no la veremos ni podremos utilizarla.
Si quisiéramos convertir esta variable local en una variable del entorno, tendríamos que exportarla con el comando export, o declararla como variable de entorno, y hacer después que se cargue en los inicios de sesión de los usuarios. Vamos a verlo paso a paso.
Para crear variables de entorno en Linux, saremos los comandos:
Explicación y ejemplo sobre las Variables de entorno
—> Hemos creado previamente una variable local.
Ahora la exportamos para convertirla en variable de entorno, con el comando export:
export VARIABLE1=HOLA1
—> También podemos usar los comandos declare y typeset para declarar la variable como variable del entorno:
declare -x VARIABLE1=HOLA1
typeset -x VARIABLE1=HOLA1
Ahora para ver las últimas variables de entorno creadas, usamos:
env | grep VARIABLE
y veremos que las nuevas variables aparecen:
Para mostrar el valor de una variable, podemos usar el comando echo $nombre_de_la_variable
En este caso mostramos el valor de la variable con nombre “VARIABLE1”
echo $VARIABLE1
Si queremos que una Variable deje de ser una variable de entorno (degradar una variable de entorno a variable local), podríamos usar
export -n
PASOS PREVIOS: Crear una variable y convertirla en variable de entorno
Primero creamos una variable LOCAL:
VARIABLE3=HOLA3
Al ser una variable local, el comando printenv NO la muestra
printenv | grep VAR
Sin embargo, el comando set (que muestra todas las variables, LOCALES y de entorno o GLOBALES), SÍ la muestra:
set | grep VAR
VARIABLE3=HOLA3
Ahora exportamos la variable LOCAL y la convertimos en variable de entorno.
Entonces, tanto el comando printenv como el comando set, mostrarán la variable (que ya es de entorno, o GLOBAL):
Degradamos la variable de entorno con export -n
Al haber ejecutado export -n, la variable ya no es una variable de entorno, sino una variable local.
Vemos que con el comando printenv ya no aparece (printenv muestra todas las variables de entorno, no las locales), pero con set aún aparece por ser variable LOCAL.
El siguiente paso es eliminar la variable.
Podemos hacerlo modificando el valor de la variable e igualándolo a nada,
o
con el comando unset:
unset VARIABLE3
o
VARIABLE3=
y vemos que la variable VARIABLE3 ya no aparece.
Hemos visto cómo crear variables de entorno, pero si no las hacemos persistentes, cuando cerremos la sesión actual ya no existirán en el sistema.
Así que vamos a ver cómo configurar las variables de entorno para que aparezcan en cada inicio de sesión. Pacece fácil, pero debido a los diferentes tipos de inicio de sesión que existen, tendremos que configurar las variables en diversos archivos (dependiendo del inicio de sesión y del sistema en el que nos encontremos).
Dependiendo de la forma en que se inicie sesión, el shell bash lee unos archivos u otros.
Veamos las diferentes inicios de sesión existentes.
—> Podemos hacer persistentes las variables de entorno para un usuario o para todo el sistema.
Por norma general se suelen definir variables de entorno como variables específicas del usuario. En este caso se configuraría preferiblemente el archivo ~/.bashrc del usuario; vamos a verlo.
Declaramos la variable de entorno en alguno de estos archivos del usuario:
;
así, como de costumbre:
export VARIABLE="valor"
La diferencia entre estos dos archivos
Es ejecutado por bash para los shells de NO inicio de sesión (se ejecutará aunque el usuario no inicie sesión)
# ~/.bashrc: executed by bash(1) for non-login shells.
# If not running interactively, don’t do anything
Ejecutado por el interprete de comandos para shells de inicio de sesión (solo se ejecutará cuando el usuario inicie sesión).
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
Editamos el archivo .bashrc del usuario y añadimos la nueva variable de la misma forma que lo haríamos por medio de la terminal:
export nombre_variable=valor
por ejemplo:
export VAR5=HOLA5
Editamos el archivo .profile del usuario y añadimos la nueva variable de la misma forma que lo haríamos por medio de la terminal:
export nombre_variable=valor
por ejemplo:
export VAR6=HOLA6
Hemos definido dos variables para el usuario “test“. Ahora, con la sesión del usuario cerrada, iniciamos sesión con otro usuario, y después nos autenticamos como el usuario “test“.
Entonces procedemos a mostrar las variables creadas, y comprobamos que la variable creada en el archivo .bashrc del usuario sí que se puede mostrar.
Sin embargo la variable creada en el archivo .profile no aparece:
EXPLICACIÓN
Podemos forzar la lectura de estos archivos para cargarlos de nuevo, por medio del comando .source:
source .bashrc
source .profile
Si necesitamos establecer variables de entorno para todos los usuarios del sistema, lo podemos hacer añadiendo las variables a cualquiera de estos archivos:
Preferiblemente usaremos el archivo /etc/environment
Al definir variables en este archivo no es necesario utilizar la sintaxis
export nombre_variable=valor
sino que simplemente usaremos:
nombre_variable=valor
Para comprobar que funciona, cerramos la sesión del usuario actual y la iniciamos nuevamente.
Y comprobamos si aparecen las nuevas variables definidas:
—> Más INFO sobre Variables de entorno en Linux.
Estas han sido algunas de las nociones, operaciones básicas y ejemplos de variables de entorno en Linux.
Si ha sido útil puedes dejar tus comentarios.