Establecer y ver variables de entorno en el sistema Linux

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

$ 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 lsinstrucciones del código de salida de color para la lsinstrucció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 pushdY popdordena 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_historyel número de líneas del archivo.
HISTSIZE La memoria permite almacenar el número de líneas del historial de comandos, que histroycontrolan 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 setel 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 envcomando 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 setcomando 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, envy la printenvfunció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 envcomando y printenvcomando. Por ejemplo, usando el printenvcomando, 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

printenvY el envcomando 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 setcomando.

$ 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 lesscomando.

$ 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 setcomando 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 $MYVARpara verificar que la variable esté configurada:

$ echo $MYVAR
lxlinux

Use el printenvcomando 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.

exportLos comandos se pueden utilizar para establecer variables de entorno. Para crear una variable de entorno, simplemente use exportla 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 unsetcomando 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.bashrco /etc/environmentfile.

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:

Supongo que te gusta

Origin blog.csdn.net/yychuyu/article/details/108051859
Recomendado
Clasificación