Cómo configurar variables de entorno en Bash en Linux

Terminal Linux estilizado con líneas de texto verdes en portátil.

Linux tiene más de un tipo de variable de entorno. Descubra cómo verlos, crearlos para conexiones locales y remotas y hacer que sobrevivan en los reinicios.

Cómo funcionan las variables ambientales

Cuando abre una ventana de terminal y el caparazón interior, se refiere a una colección de variables para garantizar que el shell esté configurado correctamente. Estas variables también aseguran que cualquier información que pueda ser referenciada por la ventana y el shell de terminal esté disponible. En conjunto, estas variables tienen configuraciones que definen el entorno que se encuentra en la ventana del terminal, hasta el símbolo del sistema. Entonces, naturalmente, se llaman variables ambientales.

Algunas variables ambientales son sistemáticas o globales. Otros están a nivel de sesión y solo puedes verlos. Otros no pueden hacer referencia a las variables de entorno de la sesión. El tercer conjunto de variables ambientales se define en el caparazón. Su configuración de ubicación, zona horaria y teclado, el directorio establecido cuando el shell intenta ordenar y su editor predeterminado se almacenan en las variables de entorno del shell.

Le mostraremos cómo ver las variables ambientales en su sistema y le mostraremos cómo crear las suyas propias. También le mostraremos cómo hacer que estén disponibles para procesos secundarios y perseverar en los reinicios.

Ambientes y patrimonio

Una vez que comienza un caparazón, pasa por una etapa inicial. En este punto, lea las variables ambientales que definen el entorno de shell.

Cuando se envía un programa o comando desde ese shell, conocido como proceso hijo, ocupa el entorno del proceso parental, ¡pero tenga cuidado! Como veremos, puede crear variables que no se agregan a su entorno para que el proceso de un niño no las herede.

Si el proceso de un niño es un shell, ese shell comenzará a partir de su propio conjunto de variables. Entonces, si cambia rápidamente el comando en el shell actual y luego lanza un baby shell, el baby shell no heredará el comando de modificación principal.

Variables del entorno global

Por rutina, las variables ambientales se capitalizan. A continuación, se muestran algunas variables de entorno global y sus valores:

  • CASCARÓN: Nombre del shell que se lanzará cuando abra una ventana de terminal. En la mayoría de las distribuciones de Linux, esto golpeará a menos que lo cambie del valor predeterminado.
  • TÉRMINO: Las ventanas de terminal son en realidad simulaciones de un terminal de hardware. Tiene el tipo de terminal de hardware que se emulará.
  • USUARIO: Nombre de usuario del usuario actual del sistema.
  • PWD: La ruta al directorio de trabajo actual.
  • OLDPWD: El directorio en el que se encuentra antes de pasar al directorio de trabajo actual.
  • LS_COLORS: Lista de códigos de colores utilizados ls resaltar diferentes tipos de archivos.
  • CORREO: Ambos mailel sistema está configurado en su computadora Linux (por defecto, no lo está), se mantendrá la ruta al buzón del usuario actual.
  • CAMINO: Lista de directorios a través de los cuales el shell busca ejecutables de comandos.
  • IDIOMA: Configuración de idioma, caracterización y codificación.
  • EL HOGAR: Directorio raíz del usuario actual.
  • _: Enfatizar (_) la variable de entorno contiene el último comando introducido.

RELACIONADO: Cómo usar pushd y popd en Linux

Podemos ver cómo algunos de ellos se configuran sin nada más sofisticado que echo, que lo hará escribe los valores en la ventana del terminal. Mira valor en posesión de variables ambientales, debe agregar un signo de dólar ($) al comienzo de su nombre.

Es un buen toque que puedes usar llenando el formulario para completar el nombre de la variable de entorno por usted. Escriba algunas letras del nombre y presione Tab. El shell llena el nombre de la variable. Si esto no sucede, deberá escribir algunas letras más para distinguir la variable de entorno de otros comandos con nombres que comiencen con las mismas letras:


echo $LANG
echo $HOME
echo $PWD

Para crear el tuyo propio Completamente agregar variables ambientales /etc/environment expediente. Necesitarás usar sudo para editar este archivo:

sudo gedit /etc/environment

Para agregar una variable de entorno, ingrese su nombre, signo igual (=) y el valor que desea que tenga la variable ambiental. Sin el espacio antes o después del signo igual (=). El nombre de la variable de entorno puede ser letras, subrayado (_) o números. Sin embargo, el primer carácter de un nombre no puede ser un número.

Si hay espacios en el valor, asegúrese de incluir el valor completo entre las comillas (").

El archivo de entorno / etc / se abrió en un editor y se agregó una nueva variable de entorno.

Guarde el archivo, luego desconéctelo y vuelva a conectarlo. Usar echo para probar nuevas variables y mantener el valor que establezca:

echo $WEBSITE

Porque es una variable de entorno global y está disponible para todos los usuarios. mary se puede hacer referencia a la variable de entorno en el siguiente enlace:

echo $WEBSITE

para ver todas las variables ambientales de repente, una especie de printenv. Hay muchas formas de hacerlo, por lo que tiene sentido cruzarlas. sort, y luego en less:

printenv | sort | less

Se nos muestra una lista ordenada de variables ambientales i less.

Podemos pasar por la salida grep buscar variables ambientales relacionado con un tema en particular.

printenv | grep GNOME

RELACIONADO: Cómo editar archivos de texto gráfico en Linux con gedit

Variables de entorno de shell

Estas son algunas de las variables de entorno de shell que se utilizan en bash confirmar o registrar su comportamiento y funcionalidad. Algunos valores se actualizan a medida que usa la terminal. Por ejemplo, el COLUMNS la variable de entorno se actualizará para reflejar cualquier cambio que pueda realizar en el ancho de la ventana de la terminal:

  • BASHOPTS: Las opciones de la línea de comando utilizadas cuando bash El fue liberado.
  • BASH_VERSION: Un bash número de versión como una serie de palabras y números.
  • BASH_VERSINFO: Un bash versión como un dígito.
  • COLUMNAS: El ancho actual de la ventana de la terminal.
  • DIRSTACK: Los directorios fueron agregado a la pila de directorios es más pushd pedido.
  • HISTFILESSIME: Número máximo líneas permitidas en history expediente.
  • SU TAMAÑO: Número de líneas history permitido en mente.
  • NOMBRE DE ANFITRIÓN: Nombre de host de la computadora.
  • IFS: Un Separador de campo interno utilizado para separar la entrada en la línea de comando. Por defecto, este es un espacio.
  • PS1: Un PS1 la variable de entorno define la línea principal, la predeterminada y la línea de comandos. Se puede incluir un conjunto de señales llamadas secuencias de escape en la definición del símbolo del sistema. Muestran cosas como el host y el nombre de usuario, el directorio de trabajo actual y la hora.
  • PS2: Cuando un pedido excede una línea y se esperan múltiples entradas, se muestra el símbolo del sistema secundario. Un PS2 este indicador de entorno está definido por la variable de entorno, que es la más grande de forma predeterminada (>).
  • COMPRAS: Opciones de shell que puede configurar usando set elección.
  • UID: Un ID de usuario del usuario actual.

RELACIONADO CON: Cómo usar pushd y popd en Linux

Veamos algunas de estas variables de shell:

echo $BASH_VERSION
echo $HOSTNAME
echo $COLUMNS
echo $HISTFILESIZE
echo $UID

Para completar, estos son los tokens que puede usar en las definiciones del símbolo del sistema:

  • t: Hora actual, formateada como HH: MM: SS.
  • D: Fecha actual, expresada como día de la semana, mes, fecha.
  • n: Carácter de nueva línea.
  • s: Nombra tu caparazón.
  • W: Nombre del directorio de trabajo actual.
  • w: La ruta al directorio de trabajo actual.
  • o: Nombre de usuario de inicio de sesión.
  • h: Nombre de host de la computadora.
  • #: Cada comando está en un shell numerado. Esto le permite ver el número de pedido en la línea de comando. No coincide con el número que pedirá history lista.
  • PS El carácter final establece el mensaje con un signo de dólar ($) para el usuario habitual y el símbolo de almohadilla (#) para el usuario root. Esto funciona comprobando el UID del usuario. Si es cero, el usuario está rooteado.

Obtienes tu definición PS1 variables ambientales en ti .bashrc expediente.

Crear variables de entorno de sesión

Para crear variables de entorno para su uso, colóquelas en la parte inferior de sus páginas. .bashrc expediente. Si desea que las variables de entorno estén disponibles para sesiones remotas, como conexiones SSH, deberá agregarlas .bash_profile archivo también.

El formato de la definición de variable ambiental es el mismo para ambos archivos. Para agregar definición a su .bash_profile archivo, escriba esto en su directorio de inicio:

gedit .bashrc

El archivo .bashrc se cargó en un editor y se agregó una nueva variable de entorno como última línea del archivo.

Agregué una variable de entorno llamada INHERITED_VAR. Escriba la palabra «exportar» al principio de la línea.

Guarde y cierre el archivo una vez que haya terminado de editarlo. Puede desconectarse y volver a conectarse, o volver a leer el shell .bash_profile archivo usando el comando dot (.) como:

. .bashrc

Ahora, creemos una variable de entorno en la línea de comando:

LOCAL_VAR="This session only"

Si usamos echo, podemos ver que ambas variables ambientales son accesibles para nosotros:

echo $LOCAL_VAR
echo $INHERITED_VAR

Notarás la definición INHERITED_VAR la variable de entorno tenía la palabra «exportar» al principio de la línea. Esto significa que los procesos del shell actual heredan la variable ambiental. Si enviamos otro usando bash comando, podemos verificar ambas variables nuevamente, dentro de la cáscara del bebé:

bash
echo $LOCAL_VAR
echo $INHERITED_VAR

Como se puede ver, INHERITED_VAR accesible para el niño, pero LOCAL_VAR No. Solo obtenemos una línea blanca.

Si bien «exportar» la parte cambiante del medio ambiente contribuye al medio ambiente heredado por los procesos de los niños, INHERITED_VAR no es una variable ambiental global. Por ejemplo, un usuario mary No puedo referirme a eso:

echo $INHERITED_VAR

Bloqueemos a nuestro bebé bash sesión, usamos exit:

exit

Los entornos bíblicos también influyen en las escrituras. Aquí hay un script simple que escribe los valores de nuestras tres variables ambientales en la ventana de terminal:

#!/bin/bash

echo "WEBSITE" $WEBSITE
echo "LOCAL_VAR" $LOCAL_VAR
echo "INHERITED_VAR" $INHERITED_VAR

Se guardó en un archivo llamado envtest.shy luego ejecutable con lo siguiente:

chmod +x envtest.sh

Cuando ejecutamos el script, puede acceder a dos de tres variables ambientales:

./envtest.sh

El puede ver el guion WEBSITE variables ambientales globales y INHERITED_VAR variables ambientales exportadas. No puede venir LOCAL_VAR, incluso si el script se ejecuta en el mismo shell donde se creó la variable.

Si es necesario, podemos exportar variables de entorno desde la línea de comandos. Nosotros haremos esto LOCAL_VAR, luego ejecute el script nuevamente:

export LOCAL_VAR
./envtest.sh

La variable de entorno se agregó al entorno de shell actual para que sea visible en el entorno heredado del script. El script también puede hacer referencia a esa variable de entorno.

Conexiones remotas

Las variables de entorno global son accesibles para sesiones de conexión remota, pero si desea tener variables de entorno definidas localmente disponibles para usted de forma remota, debe agregarlas .bash_profile expediente. Puede establecer la misma variable de entorno en .bashrc y .bash_profile archivos con diferentes valores. Esto podría ser un script, por ejemplo, para cambiar su comportamiento para las personas que usan el sistema local o remoto.

(A riesgo de engañar a las cosas, .profile expediente. También puede tener definiciones de variables ambientales. Pero .profile el archivo no se lee si .bash_profile el archivo está presente. Así que lo más seguro que se puede hacer, y bashMétodo de conformidad – para usar .bash_profile expediente.)

Para editar .bash_profile archivo, lo usaremos gedit de nuevo:

gedit .bash_profile

Agregaremos la misma variable ambiental al mismo valor que usamos antes.

Guarde sus cambios y cierre gedit.

En otra computadora, haremos uno SSH conexión a la computadora de prueba.

ssh dave@howtogeek.local

Una vez conectados, volveremos a ejecutar el script:

./envtest.sh

Un .bash_profile el archivo se leyó como parte del enlace de inicio remoto y INHERITED_VAR la variable de entorno es accesible para nosotros y para el script.

Deshabilitar variables ambientales

Para superar las variables ambientales, utilice unset pedido. Si cancelamos las variables del entorno global, WEBSITEy la variable ambiental exportada, INHERITED_VAR, ya no estará disponible en la línea de comando o en procesos secundarios:

unset WEBSITE
unset INHERITED_VAR
./envtest.sh
echo $WEBSITE

Cancelar la variable de entorno Bash en Linux.

Una cosa a tener en cuenta es que esto solo cambia la disponibilidad de las variables de entorno global para usted en esta sesión. Otra persona que inicie sesión al mismo tiempo podrá acceder a su ejemplo de esa variable de entorno global. Su corte se inició y leyó desde /etc/environment archivada durante su proceso vinculante y es independiente de la copia de la variable de otra persona.

Por ejemplo, un usuario mary todavía puedo acceder WEBSITE entorno variable y leer su valor, incluso si es un usuario dave usted unset esta reunión:

echo $WEBSITE

Control ambiental

Las variables ambientales se pueden utilizar para informar a los scripts y aplicaciones sobre cómo deben comportarse. Se pueden utilizar para almacenar configuraciones o pequeñas cantidades de datos. Por ejemplo, una secuencia de comandos puede evaluar un entorno al que pueden hacer referencia otras secuencias de comandos sin escribirlas en un archivo.