{"id":24167,"date":"2019-09-05T13:02:04","date_gmt":"2019-09-05T11:02:04","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=24167"},"modified":"2020-08-24T00:13:50","modified_gmt":"2020-08-23T22:13:50","slug":"variables-de-entorno-en-linux","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/variables-de-entorno-en-linux\/","title":{"rendered":"Variables de entorno en Linux"},"content":{"rendered":"
<\/p>\n
<\/p>\n
<\/p>\n
Una variable<\/strong> es un identificador o un nombre al que se le puede asignar un valor. Estos valores pueden ser le\u00eddos por el shell<\/em> y otros comandos.<\/p>\n —> Asignamos un valor a una variable<\/strong> usando el nombre de la variable=valor<\/em><\/p>\n —> Importante recordar que las variables distinguen entre may\u00fasculas y min\u00fasculas<\/strong>.<\/p>\n —> Al igual que los argumentos que se usan con los comandos en Linux, debemos usar las comillas simples o dobles<\/strong> cuando se incluyen caracteres especiales<\/strong> en el valor que asignamos a la variable.<\/p>\n <\/p>\n En este art\u00edculo:<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Tradicionalmente (aunque no es una regla), se usan las min\u00fasculas para las variables locales, y las may\u00fasculas para las variables de entorno.<\/p>\n <\/p>\n Hay varias formas de mostrar todas las variables en Linux<\/a>.<\/p>\n Podemos mostrar todas las variables del sistema con el comando set<\/em><\/strong>.(mostraremos las variables locales y las variables de entorno)<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n En la siguiente captura vemos el resultado que arrojar\u00e1 cualquiera de los anteriores comandos.<\/p>\n <\/p>\n Y el resultado con printenv<\/strong><\/em>:<\/p>\n <\/p>\n A excepci\u00f3n del comando env<\/em><\/strong>, que mostrar\u00e1 las variables de entorno sin “declare -x<\/em><\/strong>“:<\/p>\n <\/p>\n <\/p>\n <\/p>\n Esta variable es local. Solo se podr\u00e1 usar en el shell<\/em> en el que fue creada. Si cambiamos de shell<\/em>, o tambi\u00e9n si cambiamos de usuario, no la veremos ni podremos utilizarla. <\/p>\n <\/p>\n <\/p>\n Explicaci\u00f3n y ejemplo sobre las Variables de entorno<\/span><\/p>\n Ahora la exportamos para convertirla en variable de entorno, con el comando export<\/em><\/strong>:<\/p>\n <\/p>\n —> Tambi\u00e9n podemos usar los comandos declare<\/em><\/strong> y typeset<\/em><\/strong> para declarar la variable como variable del entorno<\/strong>:<\/p>\n <\/p>\n y veremos que las nuevas variables aparecen:<\/p>\n <\/p>\n En este caso mostramos el valor de la variable con nombre “VARIABLE1<\/em>”<\/p>\n <\/p>\n <\/p>\n Si queremos que una Variable deje de ser una variable de entorno (degradar una variable de entorno a variable local), podr\u00edamos usar<\/p>\n <\/p>\n <\/p>\n PASOS PREVIOS: Crear una variable y convertirla en variable de entorno<\/a><\/p>\n <\/p>\n Al ser una variable local, el comando printenv<\/strong><\/em> NO la muestra<\/p>\n <\/p>\n Sin embargo, el comando set<\/strong><\/em> (que muestra todas las variables, LOCALES y de entorno o GLOBALES), S\u00cd la muestra:<\/p>\n <\/p>\n Ahora exportamos la variable LOCAL y la convertimos en variable de entorno<\/strong>.<\/p>\n Entonces, tanto el comando printenv<\/em><\/strong> como el comando set<\/em><\/strong>, mostrar\u00e1n la variable (que ya es de entorno, o GLOBAL):<\/p>\n <\/p>\n <\/p>\n Degradamos la variable de entorno con export -n<\/strong><\/em><\/p>\n Al haber ejecutado export -n<\/strong><\/em>, la variable ya no es una variable de entorno, sino una variable local<\/strong>. Vemos que con el comando printenv<\/em><\/strong> ya no aparece (printenv<\/em><\/strong> muestra todas las variables de entorno<\/strong>, no las locales), pero con set<\/strong><\/em> a\u00fan aparece por ser variable LOCAL<\/strong>.<\/p>\n <\/p>\n <\/p>\n o<\/p>\n con el comando unset<\/strong><\/em>:<\/p>\n <\/p>\n <\/p>\n o<\/p>\n y vemos que la variable VARIABLE3<\/em> ya no aparece.<\/p>\n <\/p>\n Veamos las diferentes inicios de sesi\u00f3n existentes.<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Por norma general se suelen definir variables de entorno<\/strong> como variables espec\u00edficas del usuario<\/strong>. En este caso se configurar\u00eda preferiblemente el archivo \n
\n
\n
\n
\n
\n
\n
\n
Variables locales<\/strong> y variables de entorno<\/strong><\/span><\/h3>\n
\nPodemos crear variables locales y variables de entorno.
\n <\/p>\n\n
\n
\n <\/p>\nMostrar todas las variables en Linux<\/span><\/h3>\n
\n
\n<\/p>\nMostrar solamente las variables de entorno<\/span><\/h3>\n
\nTenemos varios comandos para mostrar solamente las variables de entorno<\/strong>:
\n <\/p>\n\n
\n <\/p>\n
\n <\/p>\nCrear Variables locales<\/span><\/h3>\n
\nPodemos crear una variable local<\/strong> asignando un valor a una variable usando el nombre de la variable=valor.
\n
\npor ejemplo:<\/p>\nVARIABLE1=HOLA1<\/pre>\n
\n <\/br><\/br>
\nSi quisi\u00e9ramos convertir esta variable local en una variable del entorno, tendr\u00edamos que exportarla con el comando export<\/em>, o declararla como variable de entorno, y hacer despu\u00e9s que se cargue en los inicios de sesi\u00f3n de los usuarios. Vamos a verlo paso a paso.<\/p>\nCrear Variables de entorno (variables Globales)<\/span><\/h3>\n
\nPara crear variables de entorno en Linux<\/strong>, saremos los comandos:<\/p>\n\n
\n—> Hemos creado previamente una variable local<\/strong>.<\/p>\nexport VARIABLE1=HOLA1<\/pre>\n
declare -x VARIABLE1=HOLA1<\/pre>\n
typeset -x\u00a0VARIABLE1=HOLA1<\/pre>\n
\n
\n <\/p>\nVer las variables de entorno<\/strong> creadas<\/span><\/h4>\n
\nAhora para ver las \u00faltimas variables de entorno<\/strong> creadas, usamos:<\/p>\nenv | grep VARIABLE<\/pre>\n
\n
\n <\/p>\nMostrar el valor de una variable con el comando echo<\/em><\/strong><\/span><\/h3>\n
\nPara mostrar el valor de una variable, podemos usar el comando echo $nombre_de_la_variable<\/strong><\/em>
\n <\/p>\necho $VARIABLE1<\/pre>\n
\n <\/p>\nC\u00f3mo degradar y eliminar Variables<\/span><\/h3>\n
export -n<\/pre>\n
\n
\n
\n <\/p>\nExplicaci\u00f3n y Ejemplo de c\u00f3mo degradar Variables<\/span><\/h4>\n
\nPrimero creamos una variable LOCAL:<\/p>\nVARIABLE3=HOLA3<\/pre>\n
printenv | grep VAR<\/pre>\n
set | grep VAR\r\n\r\nVARIABLE3=HOLA3<\/pre>\n
\n
\n <\/p>\n
\n <\/p>\nC\u00f3mo degradar una variable de entorno<\/span><\/h4>\n
\n <\/p>\n
\n <\/p>\nC\u00f3mo eliminar una Variable<\/span><\/h4>\n
\nEl siguiente paso es eliminar la variable.
\n
\nPodemos hacerlo modificando el valor de la variable e igual\u00e1ndolo a nada,<\/p>\nunset VARIABLE3<\/pre>\n
VARIABLE3=<\/pre>\n
\n
\nHemos visto c\u00f3mo crear variables de entorno, pero si no las hacemos persistentes, cuando cerremos la sesi\u00f3n actual ya no existir\u00e1n en el sistema.
\n
\nAs\u00ed que vamos a ver c\u00f3mo configurar las variables de entorno para que aparezcan en cada inicio de sesi\u00f3n. Pacece f\u00e1cil, pero debido a los diferentes tipos de inicio de sesi\u00f3n que existen, tendremos que configurar las variables en diversos archivos (dependiendo del inicio de sesi\u00f3n y del sistema en el que nos encontremos).
\n
\n
\n <\/p>\nLa diferencia entre sesiones de inicio de sesi\u00f3n, no inicio de sesi\u00f3n, interactivas y no interactivas<\/a><\/span><\/span><\/h3>\n
\nDependiendo de la forma en que se inicie sesi\u00f3n<\/strong>, el shell bash<\/em> lee unos archivos u otros.<\/p>\nSeg\u00fan sea un shell de Inicio de sesi\u00f3n o no inicio de sesi\u00f3n<\/span><\/h4>\n
\n
Seg\u00fan sea una sesi\u00f3n de Shell interactiva o no interactiva<\/span><\/h4>\n
\n
Otros ejemplos<\/span><\/h4>\n
\n
Comenzando a definir variables de entorno persistentes<\/span><\/h3>\n
\n—> Podemos hacer persistentes las variables de entorno para un usuario o para todo el sistema<\/strong>.<\/p>\n