Skip to content

Latest commit

 

History

History
257 lines (153 loc) · 8.57 KB

env_shell_var.md

File metadata and controls

257 lines (153 loc) · 8.57 KB

Introducción a las variables de entorno (Environment variables)

En los sistemas operativos de computadora, un entorno (environment) es un área que contiene información sobre el comportamiento de programas y aplicaciones. Las variables de entorno de Linux son utilizadas por las aplicaciones para obtener información sobre el entorno y cada variable de entorno es una variable con un nombre y un valor asociado.

Cada vez que se configura el entorno, se crea una nueva sesión de shell, y esto se puede usar como una experiencia de aprendizaje para ver cómo al cambiar las variables del entorno de Linux se pueden cambiar cosas como la apariencia del shell. Por ejemplo, se pueden establecer o cambiar rutas a archivos ejecutables, configuraciones de diseño de teclado y el directorio de inicio predeterminado.

Las variables tienen el siguiente formato y por convención tienen nombres en mayúsculas. Además, no hay espacio alrededor del símbolo igual (=).

KEY=value KEY=”Another value”

CLAVE=valor CLAVE=”Otro valor”

Si asigna varios valores a una variable, sepárelos con el caractér de dos puntos :

KEY=value1:value2

CLAVE=valor1:valor2

Hay dos tipos de variables:

Las variables de entorno (environment variables) abarcan todo el sistema y son heredadas por todos los procesos y shells del sistema.

Las variables de shell solo se aplican internamente a la instancia del shell actual.

¿Cómo usamos los comandos de Linux para enumerar y establecer variables de entorno?

Esto se puede lograr usando los siguientes comandos.

env – esto 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 – imprime todas las variables de entorno especificadas.

Por ejemplo, para mostrar el valor de la variable de entorno HOME escriba:

printenv HOME

Esto imprimirá la ruta del usuario actualmente conectado.

/home/manager

También puede pasar más de un argumento al comando printenv, en la forma:

printenv <argument1><argument 2>

Prueba este ejemplo

printenv LANG PWD

Esto producirá una salida similar a esta.

en_GB.UTF-8

Ejecutar printenv sin ningún argumento mostrará una lista de todas las variables de entorno.

printenv

Esto producirá una salida extensa similar a la truncada a continuación.

CLUTTER_IM_MODULE=xim
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_MENU_PREFIX=gnome-
LANG=en_GB.UTF-8
DISPLAY=:0
GNOME_SHELL_SESSION_MODE=ubuntu
COLORTERM=truecolor
USERNAME=manager
XDG_VTNR=1
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
XDG_SESSION_ID=1
USER=manager
DESKTOP_SESSION=ubuntu
QT4_IM_MODULE=xim
TEXTDOMAINDIR=/usr/share/locale/
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/f05913a2_61f0_4166_8fd7_9a75b1b624d0……..

Algunas de las variables de entorno más comunes se destacan a continuación.

Comando Descripción
printenv USER Usuario conectado actual
Printenv HOME Directorio de inicio del usuario actual
Printenv EDITOR El editor por defecto
SHELL La ruta del shell del usuario actual
LOGNAME El nombre del usuario actual
PATH Una lista de directorios para buscar al ejecutar comandos
LANG La configuración local actual
TERM La emulación de terminal actual
MAIL Ubicación donde se almacena el correo del usuario

set – Esto establece o desarma las variables de shell. Si se usa sin un argumento, imprimirá una lista de todas las variables, tanto de shell como de entorno, y funciones de shell.

Escriba set en una terminal y producirá una larga lista de todas las variables.

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments: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'
CLUTTER_IM_MODULE=xim
COLORTERM=truecolor
COLUMNS=80
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=ubuntu
DIRSTACK=()
DISPLAY=:0
EUID=1000
GDMSESSION=ubuntu………

unset – esto elimina las variables de shell y de entorno.

export – este comando establece las variables de entorno.

Ejemplos:

A continuación se muestran algunos ejemplos que destacan la diferencia entre las variables de entorno y de shell.

Primero crearemos una variable Shell y luego la transformaremos en una variable de entorno.

Cree una nueva variable llamada MY_VARIABLE y proporcione un valor de Linux_Variable.

MY_VARIABLE=Linux_Variable

Verifique que la variable existe escribiendo:

echo $MY_VARIABLE

Esto mostrará:

Linux_Variable

Use el comando printenv para verificar si MY_VARIABLE es una variable de entorno o no.

Si la salida está vacía, entonces no es una variable de entorno.

printenv MY_VARIABLE

Esto no mostrará ninguna salida.

Ahora que tenemos nuestra variable Shell, podemos transformarla en una variable de entorno escribiendo:

export MY_VARIABLE

Comprueba que MY_VARIABLE existe escribiendo

printenv MI_VARIABLE

Esta vez, la variable se mostrará como una variable de entorno: Linux_Variable

Tenga en cuenta que las variables creadas de esta manera solo estarán disponibles en la sesión actual y se perderán cuando cierre la sesión o abra un nuevo shell.


NOTA: Lo siguiente no es necesario que lo realice en su computadora personal

Para que las variables de entorno sean persistentes, deberá agregarlas a archivos específicos de Linux.

Vamos a editar el siguiente archivo con el editor nano.

nano /etc/environment

Agregue MY_VARIABLE=value a una nueva línea y guarde. Defina su valor en consecuencia.

Esto podría ser texto o un número, por ejemplo.

Otro método útil, si está utilizando Bash, es declarar su variable en el archivo de perfil oculto .bashrc.

nano ~/.bashrc

Agregue una nueva línea al archivo .bashrc

exportar MYVARIABLE=” value”

Guarde y actualice los cambios en el archivo .bashrc escribiendo

source ~/.bashrc

Tenga en cuenta que modificar el archivo de perfil de bashrc puede tener efectos desastrosos en su sistema si no sabe lo que está haciendo y puede resultar en que no pueda iniciar sesión. La manipulación más avanzada del script bashrc está más allá del alcance de esta introducción, pero si está interesado en leer más, consulte el siguiente enlace.

https://cloudzy.com/knowledge-base/what-is-linux-bashrc-and-how-to-use-it-full-guide/