Hola a todos, soy Liang Xu.
Todo el mundo sabe que en los sistemas Linux existen dos tipos de variables: variables de entorno y variables de shell .
Las variables de entorno están disponibles globalmente en el programa y sus subprogramas, y a menudo se utilizan para almacenar información como el editor de texto o el navegador predeterminados, la ruta del archivo ejecutable, etc. Las variables de Shell solo están disponibles en el Shell actual y se pueden usar para almacenar información como el ID del usuario actual.
Entonces, ¿qué son las variables de entorno, qué son las variables de Shell y cómo configurar y ver estas dos variables?
A continuación, deje que Liang Xu responda por usted:
Variable ambiental
Las variables de entorno se implementan en forma de pares clave-valor, son variables que están disponibles en todo el sistema y son heredadas por todos los procesos secundarios y shells derivados. Los nombres de las variables de entorno distinguen entre mayúsculas y minúsculas y generalmente se nombran en mayúsculas (MYVAR1, MYVAR2 ...)
Una variable de entorno con un solo valor se ve así:
KEY=value1
Si desea asignar varios valores a una variable de entorno, generalmente usa dos puntos (:) como separador. Cada par clave-valor finalmente se ve así:
KEY=value1:value2:value3
Si el valor que se asignará a la variable de entorno contiene espacios, debe utilizar comillas:
KEY="value with spaces"
Variables de shell
Las variables de Shell son variables en el Shell que se utilizan específicamente para establecerlas o definirlas. Cada Shell, como zsh y bash, tiene su propio conjunto de variables internas de Shell. Por lo general, se usan para rastrear datos temporales, como el directorio de trabajo actual, y su uso es el mismo que el de las variables de entorno.
Si desea utilizar variables de Shell como variables globales, puede utilizar el export
comando:
$ export MYVAR=lxlinux.net
$ echo $MYVAR
lxlinux.net
$ env | grep MYVAR
MYVAR=lxlinux.net
Variables de entorno comunes y variables de shell
Algunas variables de entorno y variables de shell son muy útiles y a menudo se citan. Las siguientes son algunas variables de entorno comunes que puede encontrar en el futuro:
nombre de la variable | sentido |
---|---|
TÉRMINO | Esto especifica el tipo de terminal que se simulará al ejecutar el Shell. Puede simular diferentes terminales de hardware para diferentes requisitos operativos. Sin embargo, normalmente no necesita preocuparse por esta variable. |
USUARIO | Usuario actualmente conectado |
PWD | Directorio de trabajo actual |
OLDPWD | En un directorio de trabajo, Shell mantiene esta variable, de modo que al cd - volver al directorio de trabajo anterior. |
LS_COLORS | Esto define las ls instrucciones del código de salida de color para la ls instrucción de salida de color agregada. Esto generalmente se usa para distinguir diferentes tipos de archivos y hacer que el usuario conozca el tipo de archivo y otra información de un vistazo. |
CORREO | Ruta del buzón de correo del usuario actual |
CAMINO | La lista de directorios que el sistema comprobará cuando busque instrucciones. Cuando el usuario ingresa una instrucción, el sistema verificará los directorios en el orden de esta lista de directorios para encontrar los archivos ejecutables correspondientes. |
LANG | Configuración actual de idioma y localización, incluida la codificación de caracteres. |
HOGAR | Directorio de inicio del usuario actual |
_ | El último comando ejecutado |
Además de las variables de entorno anteriores, a menudo también puede encontrar las siguientes variables de shell:
nombre de la variable | sentido |
---|---|
BASHOPTS | La lista de opciones que están habilitadas cuando se ejecuta bash, que es útil para determinar si el entorno de shell se está ejecutando como se esperaba. |
BASH_VERSION | La versión de bash en ejecución en formato legible por humanos |
BASH_VERSINFO | La versión de bash en ejecución en formato legible por máquina |
COLUMNAS | Se utiliza para establecer el número de columnas anchas de información de salida dibujadas en la pantalla. |
DIRSTACK | pushd Y popd ordena la pila de directorios disponible. |
HISTFILESIZE | El número de líneas del historial de comandos almacenadas en el archivo. El valor predeterminado es ~/.bash_history el número de líneas del archivo. |
HISTSIZE | La memoria permite almacenar el número de líneas del historial de comandos, que histroy controlan el número de líneas que se pueden imprimir. |
HOSTNAME | Nombre de host de la computadora |
IFS | Separador de campo interno, utilizado para separar la entrada en la línea de comando. De forma predeterminada, se utiliza un espacio como separador. |
PS1 | Defina el símbolo del sistema principal. Esto se utiliza para definir la apariencia del símbolo del sistema al iniciar una sesión de shell. PS2 se utiliza para declarar un símbolo del sistema que abarca varias líneas. |
COMPRAS | Puede usar set el comando para configurar la opción Shell. |
UID | UID (ID de usuario) del usuario actual |
Ver variables de shell y variables de entorno
En los sistemas Linux, existen varios comandos que le permiten ver las variables de entorno:
env
- Este comando le permite ejecutar el programa en un entorno personalizado sin cambiar el entorno actual. Cuando se usa sin el env
comando de parámetros , imprimirá la lista actual de variables de entorno.
printenv
- Puede imprimir todas las variables de entorno o especificadas.
set
- Este comando puede establecer o eliminar variables de Shell. Cuando se usa sin el set
comando de parámetros , imprimirá una lista de todas las variables, incluidas las variables de entorno y las variables, incluidas Shell y la función Shell.
Por defecto, env
y la printenv
función es exactamente la misma:
$ printenv
SSH_CONNECTION=10.0.2.2 37182 10.0.2.15 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
XDG_SESSION_ID=5
USER=alvin
MYVAR=lxlinux.net
PWD=/home/alvin
HOME=/home/alvin
SSH_CLIENT=10.0.2.2 37182 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/alvin
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LOGNAME=alvin
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv
Solo en las características más específicas para reflejar la diferencia de env
comando y printenv
comando. Por ejemplo, usando el printenv
comando, puede solicitar el valor de una sola variable:
$ printenv SHELL
/bin/bash
$ printenv HOME
/home/alvin
$ printenv MYVAR
lxlinux.net
env
El comando puede modificar el entorno en el que se ejecuta el programa pasando un conjunto de variables al comando:
env MYVAR=lxlinux.net command_to_run command_options
printenv
Y el env
comando solo puede imprimir la variable de entorno, y si desea imprimir una lista de todas las variables o la función Shell, puede usar el set
comando.
$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell: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'
COLUMNS=140
DIRSTACK=()
EUID=1000
GROUPS=()
HISTCONTROL=ignoreboth
HISTFILE=/home/alvin/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000
HOME=/home/alvin
HOSTNAME=ubuntu-bionic
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=C.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
LINES=35
LOGNAME=alvin
.....
Este comando mostrará una lista grande de todas las variables, por lo que es posible que desee pasar a la salida del less
comando.
$ set | less
Establecer variables de shell y variables de entorno
Hay varios comandos que pueden establecer variables de entorno en el sistema Linux:
set
- Este comando puede establecer o desarmar variables de Shell. Cuando se usa sin el set
comando de parámetros , imprimirá una lista de todas las variables, incluidas las variables de entorno y las variables, incluidas Shell y la función Shell.
unset
- Este comando puede eliminar variables de shell y variables de entorno.
export
-Este comando puede establecer variables de entorno.
Para comprender mejor la diferencia entre las variables de Shell y las variables de entorno, comencemos con la configuración de las variables de Shell y luego hablemos de las variables de entorno.
Empiece por definir una variable de Shell en la sesión actual:
$ MYVAR=lxlinux
Puede usar echo $MYVAR
para verificar que la variable esté configurada:
$ echo $MYVAR
lxlinux
Use el printenv
comando para verificar que la variable sea una variable de entorno:
$ printenv MYVAR
No se devuelve ninguna salida, lo que significa que la variable MYVAR no es una variable de entorno.
export
Los comandos se pueden utilizar para establecer variables de entorno. Para crear una variable de entorno, simplemente use export
la variable de comando Shell exportada como variables de entorno:
$ export MYVAR
Puedes consultar con la siguiente declaración:
$ printenv MYVAR
lxlinux
Por supuesto, también puede establecer variables de entorno con solo una línea de código:
$ export MYNEWVAR="My New Variable"
Pero las variables de entorno creadas de esta manera solo se pueden usar en la sesión actual.Si abre una nueva sesión de Shell o cierra sesión, todas las variables se perderán.
También podemos restaurar las variables de entorno a las variables de Shell o eliminarlas por completo:
La variable MYVAR se define como una variable de entorno y podemos restaurarla a una variable de Shell ingresando el siguiente código:
$ export -n MYVAR
De esta manera, la variable MYVAR ya no es una variable de entorno, pero sigue siendo una variable de Shell.
Ya sean variables de Shell o variables ambientales, desea eliminar por completo la variable, puede usar el unset
comando para eliminar:
$ unset MYVAR
La siguiente declaración se puede utilizar para verificar que la variable MYVAR se haya eliminado:
$ echo $MYVAR
Dado que la variable se ha eliminado, no se devuelve nada.
Persistencia de variables ambientales
Muchos programas necesitan usar variables de entorno para determinar el método de ejecución específico, pero no queremos restablecer variables importantes cada vez que se inicia una nueva sesión de Shell, por lo que debemos escribir variables de entorno importantes en el archivo de configuración.
Las sesiones de shell se pueden iniciar de diferentes formas, por ejemplo, shells interactivos conectados a la terminal y shells no interactivos no conectados a la terminal, así como shells de inicio de sesión y shells que no lo son. El shell bash varía según los diferentes métodos de inicio de la sesión. Leer diferentes archivos de configuración.
Sin embargo, en la mayoría de las distribuciones de Linux, cuando inicia una nueva sesión de Shell, generalmente lee las variables de entorno de los siguientes archivos:
/etc/environment
- Utilice este archivo para configurar las variables de entorno disponibles en todo el sistema.
/etc/profile
- Siempre que bash inicie sesión en Shell, se cargarán las variables establecidas en este archivo.
~/.bashrc
- Archivos de configuración de Shell específicos para cada usuario. Por ejemplo, si está utilizando Bash, puede declarar variables en él.
Si desea cargar nuevas variables de entorno en la sesión actual de Shell, puede usar el comando de origen:
$ source ~/.bashrc
Si desea establecer variables de entorno, puede considerar agregarlas a /etc/profile
, /etc/bash.bashrc
o /etc/environment
file.
En conclusión
En este artículo, aprendimos sobre algunas variables de entorno comunes y variables de Shell, y aprendimos cómo configurar y ver estas variables. De hecho, estas variables siempre han estado en nuestra sesión de Shell y son útiles para muchos programas. Hay muchas variables comunes Todas las escenas harán referencia a estas variables. Espero que esto también ayude a tu trabajo. Si aún tiene alguna pregunta sobre estas dos variables, deje un mensaje y hágamelo saber.
Finalmente, recientemente, muchos amigos me pidieron la hoja de ruta de aprendizaje de Linux , así que, según mi experiencia, pasé un mes quedándome despierto hasta tarde en mi tiempo libre y compilé un libro electrónico. Ya sea que esté en una entrevista o en la superación personal, ¡creo que le ayudará! El directorio es el siguiente:
Dáselo a todo el mundo de forma gratuita, ¡solo pídeme que me levantes el pulgar!
Libro electrónico | Hoja de ruta de aprendizaje sobre desarrollo de Linux
¡También espero que algunos amigos se unan a mí para hacer que este libro electrónico sea más perfecto!
¿Ganancia? Espero que los hierros viejos tengan una combinación de tres golpes para que más personas puedan leer este artículo.
Lectura recomendada: