Variables de entorno en Linux

Vamos a ver cómo trabajar con las variables de entorno en Linux.

 

variables de rntorno en linux

 

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:

 

 

Variables locales y variables de entorno

 
Podemos crear variables locales y variables de entorno.
 

  • Las variables locales solo se usarán en el shell en el que fue creada.
  • Las variables de entorno podrán usarse en otros programas o shells secundarios generados desde el shell actual.

 

Tradicionalmente (aunque no es una regla), se usan las minúsculas para las variables locales, y las mayúsculas para las variables de entorno.

 

 

Mostrar todas las variables en Linux

 

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)

 

 

  • set : El comando set permite cambiar los valores de las opciones de shell, y establecer otros parámetros. Si no proporcionamos argumentos u opciones, el comando set muestra los nombres y valores de todas las variables y funciones de shell.

 
comando set - ver variables linux

 

 

 

Mostrar solamente las variables de entorno

 
Tenemos varios comandos para mostrar solamente las variables de entorno:
 

  • env : Solo mostrará una lista de variables que han sido exportadas (no mostrará todas las variables bash)
  • declare -x : mostrar solamente las variables de entorno.
  • typeset -x : mostrar solamente las variables de entorno.
  • export -p : mostrar solamente las variables de entorno.

 

En la siguiente captura vemos el resultado que arrojará cualquiera de los anteriores comandos.

comando declare - ver variables de entorno
 

 

Y el resultado con printenv:

comando printenv - mostrar variables de entorno
 

 

A excepción del comando env, que mostrará las variables de entorno sin “declare -x“:

comando env - ver variables

 

 

Crear Variables locales

 
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.

 

 

Crear Variables de entorno (variables Globales)

 
Para crear variables de entorno en Linux, saremos los comandos:

  • export
  • declare
  • typeset

 

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

 

 

Ver las variables de entorno creadas

 
Ahora para ver las últimas variables de entorno creadas, usamos:

env | grep VARIABLE

 

y veremos que las nuevas variables aparecen:

 
comandos para crear variables de entorno linux
 

 

Mostrar el valor de una variable con el comando echo

 
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

crear variable local linux
 

 

Cómo degradar y eliminar Variables

 

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

 

comando export -n
 

 

Explicación y Ejemplo de cómo degradar Variables

 

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

 
crear mostrar variable local linux
 

 

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):

exportar variable local a variable de entorno
 

 

Cómo degradar una variable de entorno

 

Degradamos la variable de entorno con export -n

degradar variable de entorno a variable local
 

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.

 

 

Cómo eliminar una Variable

 
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:

comando unset - eliminar variable de entorno linux

 

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).
 

 

La diferencia entre sesiones de inicio de sesión, no inicio de sesión, interactivas y no interactivas

 
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.

 

 

Según sea un shell de Inicio de sesión o no inicio de sesión

 

  • Shell de Inicio de sesión: Una sesión de shell que comienza autenticando al usuario para entrar al sistema. Ejemplo: Iniciar sesión en una terminal o mediante SSH (siempre que se nos pida realizar la autenticación de usuario).
  •  

  • Shell sin inicio de sesión: Una sesión de shell que comienza sin tener que entrar al sistema (ya estamos dentro). Ejemplo: cuando llamamos a una nueva sesión de shell desde una sesión de shell en la que ya estábamos autenticados (podemos hacerlo con el comando bash); la nueva sesión de shell “hija” se iniciará sin pedirnos autenticación.

 

 

Según sea una sesión de Shell interactiva o no interactiva

 

  • Sesión de shell interactiva: una sesión de shell conectada a una sesión de  terminal.
  • Sesión de shell NO interactiva: una sesión de shell NO conectada a un terminal.

 

 

Otros ejemplos

 

  • Un script lanzado desde la linea de comandos normalmente se ejecuta en un shell NO interactivo y sin inicio de sesión.
  • Una sesión de terminal puede ser cualquier combinación de las propiedades comentadas (Inicio de sesión / No inicio de sesión , Interactiva / No interactiva).

 

 

Comenzando a definir variables de entorno persistentes

 
—> 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.
 

 

Definir Variables de entorno específicas de usuario

 
Declaramos la variable de entorno en alguno de estos archivos del usuario:
 ;

  • /home/usuario/.bashrc
  • o en /home/usuario/.profile

 
así, como de costumbre:

export VARIABLE="valor"

 

 

La diferencia entre estos dos archivos

  • Archivo .bashrc:

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

 

 

  • Archivo .profile

 
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.

 

 

Configurar las variables de entorno para un usuario por medio de su archivo .bashrc

 
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

 
definir variables de entorno para usuario en archivo .bashrc
 

 

Configurar las variables de entorno para un usuario es por medio de su archivo .profile

 
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

 

definir variables de usuario en el archivo .profile
 

 

Pruebas: Archivo .bashrc vs archivo .profile

 
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:
 
diferencias variables  de entorno - archivo .bashrc y archivo .profile
 

 

EXPLICACIÓN

  • Tal y como hemos comentado anteriormente, la variable definida en el archivo .bashrc aparece porque dicho archivo se ejecutará aunque el usuario no inicie sesión (como en este caso, en el que otro usuario había iniciado sesión.)

 

  • Por la misma razón, la variable definida en el archivo .profile NO aparece ya que dicho archivo solo se ejecutará cuando el usuario inicie sesión (y este no es el caso).

 

 

Reiniciar las variables de entorno en Linux (Forzar la lectura de los archivos .bashrc o .profile del usuario)

 
Podemos forzar la lectura de estos archivos para cargarlos de nuevo, por medio del comando .source:

source .bashrc
 
source .profile

 

 

Definir Variables de entorno para todo el sistema

 
Si necesitamos establecer variables de entorno para todos los usuarios del sistema, lo podemos hacer añadiendo las variables a cualquiera de estos archivos:

  • /etc/profile
  • /etc/bash.bashrc
  • /etc/environment

 

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:
 
variables de entorno para todo el sistema

 

 
—> 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.