Conceptos básicos de Linux y desarrollo de aplicaciones Serie II: Variables de entorno de Linux

Tabla de contenido

¿Por qué Linux necesita variables de entorno?

Variables globales frente a variables de entorno

Archivo de configuración de shell

Orden de ejecución de shell

Modificar el archivo de configuración

Efecto del modo de inicio de shell en las variables

¿Por qué Linux necesita variables de entorno?

Porque cuando Linux ejecuta algunos comandos, irá a muchos directorios para buscar los programas ejecutables correspondientes.Si los programas ejecutables están dispersos en diferentes directorios, llevará mucho tiempo buscar, por lo que Linux acepta que al ejecutar un comando, vaya a un archivo especificado para encontrar el directorio donde se encuentra el programa ejecutable.Este archivo especificado es el archivo de configuración de variables de entorno.

Las palabras originales de Wildfire: Debido a que Linux es un sistema multiusuario y multitarea, cada usuario necesita un entorno operativo de sistema diferente. Solo configurando diferentes variables de entorno para diferentes usuarios de Linux se pueden satisfacer las necesidades de los diferentes usuarios.

Las variables de entorno son en realidad un tipo de variables de Shell

Variables globales frente a variables de entorno

definición directa

gec@ubuntu:~$ abc=123
gec@ubuntu:~$ echo abc
abc
gec@ubuntu:~$ echo $abc
123
gec@ubuntu:~$ /bin/bash
gec@ubuntu:~$ echo $abc

gec@ubuntu:~$ exit
exit
gec@ubuntu:~$ echo $abc
123
gec@ubuntu:~$ export abc
gec@ubuntu:~$ /bin/bash
gec@ubuntu:~$ echo $abc
123

exportar

exportUn comando puede exportar una variable (o configurarla como una variable de entorno) para que los procesos secundarios puedan observar y usar la variable .

Cuando exporta una variable usando un comando en el shell export, la variable se agrega al entorno del proceso de shell actual y es visible en el proceso de shell y todos sus procesos secundarios. Esto significa que cualquier proceso secundario iniciado por el shell actual puede acceder y utilizar esta variable de entorno.

Por ejemplo, suponga que una variable se define en el shell y se exporta MY_VARcon el comando:export

$ MY_VAR="Hello, world" $ export MY_VAR

Luego, inicie un nuevo subproceso, digamos para ejecutar un script:

$ ./myscript.sh

En myscript.sheste script, se puede acceder y utilizar directamente esta variable de entorno MY_VARporque se ha exportado al proceso secundario.

Cabe señalar que cuando el proceso secundario modifica el valor de la variable de entorno heredada del proceso principal, no afectará el valor de la variable de entorno en el proceso principal ni en otros procesos secundarios del mismo nivel. Cada proceso tiene su propia copia de las variables de entorno y la modificación de las variables de entorno en un proceso no afectará a otros procesos.

Por lo tanto, el uso de exportcomandos puede transferir fácilmente variables y compartir información entre el proceso principal y el proceso secundario, y realizar el intercambio de datos y la comunicación entre procesos.

Archivo de configuración de shell

De hecho, cada vez que se inicia el proceso de Shell, ejecutará el código en el archivo de configuración de Shell para realizar un trabajo de inicialización.

Los archivos de configuración relacionados con Bash Shell incluyen principalmente

  1. /etc/perfil  

  2. ~/.bash_perfil

  3. ~/.bash_login

  4. ~/.perfil

  5. ~/.bashrc

  6. /etc/bashrc

  7. /etc/bash.bashrc

  8. /etc/perfil.d/*.sh

Estos archivos de configuración tienen diferentes tiempos de ejecución en el shell Bash:

  1. /etc/profile: Este es el archivo de configuración global del sistema, que se ejecutará cuando se inicie el sistema, configurando variables de entorno para todos los usuarios y realizando tareas de inicialización a nivel del sistema.

  2. ~/.bash_profile, ~/.bash_login, ~/.profile: Estos son los archivos de configuración personal del usuario, que se ejecutan cuando el usuario inicia sesión. Son buscados y ejecutados por Bash en orden de prioridad, generalmente uno de ellos puede ser seleccionado para configuración, y la prioridad disminuye gradualmente de arriba hacia abajo.

  3. ~/.bashrc: Este es el archivo de configuración personal del usuario, que se ejecutará cada vez que se abra una nueva ventana de terminal de Bash. Se utiliza para establecer variables de entorno específicas del usuario, alias, funciones personalizadas, etc.

  4. /etc/bashrc, /etc/bash.bashrc: estos son archivos de configuración de Bash a nivel de sistema que se ejecutan cada vez que se abre una nueva ventana de terminal de Bash para establecer variables de entorno a nivel de sistema y realizar otras tareas de inicialización para todos los usuarios .

  5. /etc/profile.d/*.sh: Este es un directorio que contiene algunos .sharchivos de comandos de shell que terminan en . Estos archivos de script se ejecutan automáticamente cuando un usuario inicia sesión y se pueden usar para cargar variables de entorno e información de configuración para una aplicación o biblioteca específica.

Cabe señalar que los archivos de configuración global (como /etc/profiley /etc/profile.d/*.sh) generalmente tienen efecto para todos los usuarios, mientras que los archivos de configuración personal del usuario (como ~/.bash_profiley ~/.bashrc) son solo para el usuario que ha iniciado sesión actualmente.

La secuencia en tiempo de ejecución es:

  1. Al iniciar sesión, el archivo de configuración global se ejecuta primero /etc/profile.
  2. Luego seleccione y ejecute el perfil personal del usuario de acuerdo a la prioridad , generalmente ~/.bash_profile, ~/.bash_logino ~/.profile(solo la primera que exista). Las variables globales aquí solo son válidas para usuarios específicos
  3. Al abrir una nueva ventana de terminal Bash, se ejecuta el perfil de usuario ~/.bashrc, si está presente.
  4. /etc/bashrcAl mismo tiempo, los archivos y scripts de configuración a nivel del sistema también se ejecutan cada vez que se abre una nueva ventana de terminal de Bash /etc/bash.bashrc. Las variables globales aquí son válidas para todos los usuarios

De hecho, es la diferencia entre el directorio raíz / y el directorio de inicio.

Al editar y personalizar estos archivos de configuración, puede implementar configuraciones a nivel personal y del sistema, personalizar variables de entorno, alias, funciones, etc., y cargar otros scripts de shell personalizados.

Orden de ejecución de shell

/etc/profiles->~/.profile(~/.bash_profile、~/.bash_login)

sudo vi /etc/perfil

 sudo vi ~/.perfil

 

Modificar el archivo de configuración

Compartido por todos los usuarios y todos los procesos: /etc/bash.bashrc

gec@ubuntu:~$ sudo vi /etc/bash.bashrc 


Un usuario, compartido por todos los procesos: el modo de inicio de shell ~/.bashrc afecta a las variables

gec@ubuntu:~$ sudo vi .bashrc

 

Ejecutar en el proceso de subshell: /bin/bash y ./

Ejecutar en el proceso actual: fuente y .

xiaoming@ubuntu:/home/gec$ sudo vi test2.sh
[sudo] xiaoming 的密码: 
xiaoming@ubuntu:/home/gec$ sudo chmod 777 test2.sh
xiaoming@ubuntu:/home/gec$ ./test2.sh
xiaoming@ubuntu:/home/gec$ su gec
密码: 
gec@ubuntu:~$ source test2.sh
gec@ubuntu:~$ echo $a
111
gec@ubuntu:~$ echo $b
222
gec@ubuntu:~$ unset a b
gec@ubuntu:~$ echo $a

gec@ubuntu:~$ echo $b

gec@ubuntu:~$ . test2.sh
gec@ubuntu:~$ echo $a
111
gec@ubuntu:~$ echo $b
222
gec@ubuntu:~$ unset a b

gec@ubuntu:~$ /bin/bash test2.sh
gec@ubuntu:~$ echo $a

gec@ubuntu:~$ echo $b


Supongo que te gusta

Origin blog.csdn.net/qq_51519091/article/details/132111708
Recomendado
Clasificación