Cómo establecer variables de entorno en Bash en Linux

Hay más de un tipo de variable de entorno en Linux. Aprenda a verlos, crearlos para inicios de sesión locales y remotos, y hacer que sobrevivan a los reinicios.

Cómo funcionan las variables de entorno

Al iniciar una ventana de terminal y la cáscara dentro de ella, se hace referencia a una colección de variables para garantizar que el shell esté configurado correctamente. Estas variables también garantizan que cualquier información a la que la ventana de terminal y el shell puedan necesitar hacer referencia esté disponible. En conjunto, estas variables contienen configuraciones que definen el entorno que encuentra dentro de la ventana de su terminal, hasta el aspecto del símbolo del sistema. Entonces, naturalmente, se les conoce como variables de entorno.

Algunas variables de entorno son globales o de todo el sistema. Otros son de toda la sesión y solo pueden ser vistos por usted. Otros no pueden hacer referencia a las variables de entorno de sesión. Hay un tercer conjunto de variables de entorno definidas dentro del shell. La configuración regional, la zona horaria y el teclado, el conjunto de directorios buscados cuando el shell intenta encontrar un comando y el editor predeterminado se almacenan en variables de entorno de shell.

Le mostraremos cómo ver las variables de entorno que existen en su sistema y describiremos cómo crear las suyas propias. También le mostraremos cómo ponerlos a disposición de los procesos secundarios y ser persistentes en los reinicios.

Entornos y herencia

Cuando se inicia un shell, pasa por una fase de inicialización. Es en este punto que lee las variables de entorno que definen el entorno del shell.

Cuando se inicia un programa o comando desde ese shell, conocido como proceso secundario, hereda el entorno del proceso padre, ¡pero ten cuidado! Como veremos, puede crear variables que no se agreguen a su entorno, por lo que no serán heredadas por un proceso secundario.

Si el proceso secundario es un shell, ese shell se inicializará a partir de su propio conjunto de variables frescas. Por lo tanto, si modifica el símbolo del sistema en el shell actual y, a continuación, inicia un shell secundario, el shell secundario no heredará el símbolo del sistema modificado del elemento primario.

Variables del entorno global

Por convención, las variables de entorno reciben nombres en mayúsculas. Estas son algunas de las variables de entorno global y lo que representan los valores que contienen:

  • CÁSCARA: Nombre del shell que se iniciará al abrir una ventana de terminal. En la mayoría de las distribuciones de Linux, esto será bash a menos que lo haya cambiado del valor predeterminado.
  • TÉRMINO: Las ventanas de terminal son en realidad emulaciones de un terminal de hardware. Esto contiene el tipo de terminal de hardware que se emulará.
  • USUARIO: El nombre de usuario de la persona actual que utiliza el sistema.
  • PWD: Ruta de acceso al directorio de trabajo actual.
  • OLDPWD: El directorio en el que se encontraba antes de pasar al directorio de trabajo actual.
  • LS_COLORS: La lista de códigos de color utilizados por el ls resaltar diferentes tipos de archivos.
  • CORREO: Si el mailEl sistema se ha configurado en su computadora Linux (de forma predeterminada, no lo es), esto mantendrá el ruta de acceso al buzón del usuario actual.
  • CAMINO: Una lista de directorios que el shell buscará para encontrar ejecutables de comandos.
  • LANG: La configuración de idioma, localización y codificación de caracteres.
  • HOGAR: El directorio principal del usuario actual.
  • _: El guión bajo (_) variable de entorno contiene el último comando que se escribió.

Podemos ver lo que algunos de estos están configurados para usar nada más sofisticado que echo, que Escriba los valores en la ventana terminal. Para ver el valor mantenido por una variable de entorno, debe agregar un signo de dólar () al principio de su nombre.

Un buen toque es que puedes usar finalización de la ficha para rellenar el nombre de la variable de entorno por usted. Escriba algunas letras del nombre y presione Tab. El nombre de la variable lo completa el shell. Si eso no sucede, deberá escribir algunas letras más para distinguir la variable de entorno de otros comandos con nombres que comiencen con esas mismas letras:

echo €SHELL
echo €LANG
echo €HOME
echo €PWD

Para crear el tuyo propio global variables de entorno, agréguelas a la /etc/environment archivo. Tendrás que usar sudo para editar este archivo:

sudo gedit /etc/environment

Para agregar una variable de entorno, escriba su nombre, un signo igual (=), y el valor que desea que contenga la variable de entorno. No espacies antes o después del signo igual (=). El nombre de la variable de entorno puede contener letras, un guión bajo (_), 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 adjuntar todo el valor entre comillas (").

Guarde el archivo y, a continuación, cierre la sesión y vuelva a entrar. Uso echo para comprobar que existe una nueva variable y contiene el valor establecido:

echo €WEBSITE

Porque es una variable ambiental global, y está disponible para todos, usuario mary puede hacer referencia a la variable de entorno la próxima vez que inicie sesión:

echo €WEBSITE

Para ver todas las variables de entorno a la vez, escriba printenv. Hay mucha salida, por lo que tiene sentido canalizarla a través de ella. sort, y luego en less:

printenv | sort | less

La lista ordenada de variables de entorno se muestra para nosotros en less.

Podemos canalizar la salida a través de grep para buscar variables de entorno relacionado con un tema en particular.

printenv | grep GNOME

Variables de entorno de shell

Estas son algunas de las variables de entorno de shell utilizadas en bash para dictar o registrar su comportamiento y funcionalidad. Algunos de los valores se actualizan a medida que se utiliza el terminal. Por ejemplo, el COLUMNS La variable de entorno se actualizará para reflejar los cambios que pueda realizar en el ancho de la ventana del terminal:

  • BASHOPTS: Las opciones de línea de comandos que se utilizaron cuando bash se lanzó.
  • BASH_VERSION: El bash número de versión como una cadena de palabras y números.
  • BASH_VERSINFO: El bash versión como un dígito.
  • COLUMNAS: El ancho actual de la ventana del terminal.
  • DIRSTACK: Los directorios que han sido agregado a la pila de directorios por el pushd mandar.
  • HISTFILESIZE: Número máximo de líneas permitidas en el history archivo.
  • HISTSIZE: Número de líneas de history permitido en la memoria.
  • NOMBRE DE HOST: El nombre de host del equipo.
  • IFS: El Separador de campo interno se utiliza para separar la entrada en la línea de comandos. De forma predeterminada, este es un espacio.
  • PS1: El PS1 La variable de entorno contiene la definición para el símbolo del sistema principal, predeterminado y del sistema. Se puede incluir un conjunto de tokens llamados secuencias de escape en la definición del símbolo del sistema. Representan cosas como el host y el nombre de usuario, el directorio de trabajo actual y la hora.
  • PS2: Cuando un comando abarca más de una línea y se espera más entrada, se muestra el símbolo del sistema secundario. El PS2 La variable de entorno contiene la definición de este indicador secundario, que, de forma predeterminada, es el signo mayor que (>).
  • SHELLOPTS: Opciones de shell que puede establecer mediante el set opción.
  • UID: El Identificador de usuario del usuario actual.
Te puede ser útil:  ¿Cuál es el mejor protocolo VPN? PPTP vs. OpenVPN vs. L2TP/IPsec vs. SSTP

Veamos algunas de estas variables de shell:

echo €BASH_VERSION
echo €HOSTNAME
echo €COLUMNS
echo €HISTFILESIZE
echo €UID

En aras de la integridad, estos son los tokens que puede usar en las definiciones del símbolo del sistema:

  • /t: La hora actual, con formato HH:MM:SS.
  • /d: La fecha actual, expresada como día de la semana, mes, fecha.
  • /n: Un carácter de nueva línea.
  • /s: El nombre de su shell.
  • /W: Nombre del directorio de trabajo actual.
  • /w: Ruta de acceso al directorio de trabajo actual.
  • /u: El nombre de usuario de la persona que ha iniciado sesión.
  • /h: El nombre de host del equipo.
  • /#: Cada comando dentro de un shell está numerado. Esto le permite ver el número del comando en el símbolo del sistema. Esto no es lo mismo que el número que tendrá el comando en el history lista.
  • /€: Establece el carácter final del mensaje en un signo de dólar () para un usuario normal y un símbolo hash (#) para el usuario raíz. Esto funciona comprobando el UID del usuario. Si es cero, el usuario es root.

Encontrarás la definición de tu PS1 variable de entorno en su .bashrc archivo.

Creación del entorno de sesión Variables

Para crear variables de entorno para su propio uso, agréguelas a la parte inferior de su .bashrc archivo. Si desea tener las variables de entorno disponibles para las sesiones remotas, como las conexiones SSH, deberá agregarlas a su .bash_profile archivo, también.

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

gedit .bashrc

Hemos añadido una variable de entorno llamada INHERITED_VAR. Tenga en cuenta la palabra “exportar” al principio de la línea.

Guarde y cierre el archivo después de terminar de editarlo. Puede cerrar sesión y volver a entrar, o puede hacer que el shell vuelva a leer el .bash_profile mediante el comando dot (.) así:

. .bashrc

Ahora, vamos a crear una variable de entorno en la línea de comandos:

LOCAL_VAR="This session only"

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

echo €LOCAL_VAR
echo €INHERITED_VAR

Notarás la definición de la INHERITED_VAR la variable de entorno tenía la palabra “exportar” al principio de la línea. Esto significa que la variable de entorno será heredada por los procesos secundarios del shell actual. Si lanzamos otro usando el bash comando, podemos comprobar las dos variables de nuevo, desde el interior del shell hijo:

bash
echo €LOCAL_VAR
echo €INHERITED_VAR

Como puede ver, el INHERITED_VAR es accesible en el shell secundario, pero LOCAL_VAR no lo es.  Simplemente obtenemos una línea en blanco.

Aunque “exportar” agrega la parte de la variable de entorno al entorno que heredan los procesos secundarios, INHERITED_VAR no es una variable de entorno global. Por ejemplo, usuario mary no puede hacer referencia a él:

echo €INHERITED_VAR

Para cerrar a nuestro hijo bash sesión, usamos exit:

exit

Los entornos heredados también afectan a los scripts. Aquí hay un script simple que escribe los valores de nuestras tres variables de entorno en la ventana del terminal:

#!/bin/bash

echo "WEBSITE" €WEBSITE
echo "LOCAL_VAR" €LOCAL_VAR
echo "INHERITED_VAR" €INHERITED_VAR

Esto se guardó en un archivo llamado envtest.shy, a continuación, se hizo ejecutable con lo siguiente:

chmod +x envtest.sh

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

./envtest.sh

El script puede ver el WEBSITE variable de entorno global y el INHERITED_VAR variable de entorno exportada. No puede acceder LOCAL_VAR, aunque el script se ejecute en el mismo shell donde se creó la variable.

Si lo necesitamos, podemos exportar una variable de entorno desde la línea de comandos. Lo haremos a nuestro LOCAL_VARy, a continuación, vuelva a ejecutar el script:

export LOCAL_VAR
./envtest.sh

La variable de entorno se ha agregado al entorno del shell actual, por lo que aparece en el entorno heredado por el script. El script también puede hacer referencia a esa variable de entorno.

Conexiones remotas

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

(A riesgo de confundir las cosas, también hay un .profile archivo. También puede contener definiciones de variables de entorno. Sin embargo, el .profile El archivo no se lee si el archivo .bash_profile el archivo está presente. Por lo tanto, lo más seguro que se puede hacer, y el bash-compliant way—es utilizar el .bash_profile archivo.)

Para editar el .bash_profile , usaremos gedit otra vez:

gedit .bash_profile

Vamos a agregar la misma variable de entorno con el mismo valor que usamos antes.

Guarde los cambios y cierre gedit.

En otro ordenador, haremos un SSH conexión al equipo de prueba.

ssh dave@howtogeek.local

Una vez que estemos conectados, ejecutaremos el script una vez más:

./envtest.sh

El .bash_profile se ha leído como parte de la inicialización del inicio de sesión remoto y el archivo INHERITED_VAR la variable de entorno es accesible para nosotros y para el script.

Restablecimiento de una variable de entorno

Para desestablecer una variable de entorno, utilice el unset mandar. Si desconfiguramos la variable de entorno global, WEBSITE, y la variable de entorno exportada, INHERITED_VAR, ya no estarán disponibles en la línea de comandos, ni en los procesos secundarios:

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

Un punto 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 haya iniciado sesión simultáneamente aún podrá acceder a su instancia de esa variable de entorno global. Su instancia fue inicializada y leída desde el /etc/environment durante su proceso de inicio de sesión, y es independiente de la copia de la variable de cualquier otra persona.

A título de ejemplo, usuario mary aún puede acceder al WEBSITE variable de entorno y leer su valor, aunque el usuario dave tiene unset en su sesión:

echo €WEBSITE

Control Ambiental

Las variables de entorno se pueden usar para que los scripts y las aplicaciones sepan cómo deben comportarse. Se pueden usar para almacenar configuraciones o pequeñas cantidades de datos. Por ejemplo, un script puede rellenar un entorno con un valor al que pueden hacer referencia otros scripts sin tener que escribirlos en un archivo.

¿Qué tan útil te resultó el artículo?

¡Haz click en una estrella para valorar!

Valoración media / 5. Votos totales:

¡No hay votos hasta ahora! Sé el primero en valorar este artículo.

Utilizamos cookies para personalizar el contenido y los anuncios, para ofrecer funciones de redes sociales y para analizar nuestro tráfico. También compartimos información sobre su uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis. View more
Cookies settings
Aceptar
Política de privacidad y cookies
Privacy & Cookies policy
Cookie name Active
El presente Política de Privacidad establece los términos en que Alternativa.click usa y protege la información que es proporcionada por sus usuarios al momento de utilizar su sitio web. Esta compañía está comprometida con la seguridad de los datos de sus usuarios. Cuando le pedimos llenar los campos de información personal con la cual usted pueda ser identificado, lo hacemos asegurando que sólo se empleará de acuerdo con los términos de este documento. Sin embargo esta Política de Privacidad puede cambiar con el tiempo o ser actualizada por lo que le recomendamos y enfatizamos revisar continuamente esta página para asegurarse que está de acuerdo con dichos cambios.

Información que es recogida

Nuestro sitio web podrá recoger información personal por ejemplo: Nombre,  información de contacto como  su dirección de correo electrónica e información demográfica. Así mismo cuando sea necesario podrá ser requerida información específica para procesar algún pedido o realizar una entrega o facturación.

Uso de la información recogida

Nuestro sitio web emplea la información con el fin de proporcionar el mejor servicio posible, particularmente para mantener un registro de usuarios, de pedidos en caso que aplique, y mejorar nuestros productos y servicios.  Es posible que sean enviados correos electrónicos periódicamente a través de nuestro sitio con ofertas especiales, nuevos productos y otra información publicitaria que consideremos relevante para usted o que pueda brindarle algún beneficio, estos correos electrónicos serán enviados a la dirección que usted proporcione y podrán ser cancelados en cualquier momento. Alternativa.click está altamente comprometido para cumplir con el compromiso de mantener su información segura. Usamos los sistemas más avanzados y los actualizamos constantemente para asegurarnos que no exista ningún acceso no autorizado.

Cookies

Una cookie se refiere a un fichero que es enviado con la finalidad de solicitar permiso para almacenarse en su ordenador, al aceptar dicho fichero se crea y la cookie sirve entonces para tener información respecto al tráfico web, y también facilita las futuras visitas a una web recurrente. Otra función que tienen las cookies es que con ellas las web pueden reconocerte individualmente y por tanto brindarte el mejor servicio personalizado de su web. Nuestro sitio web emplea las cookies para poder identificar las páginas que son visitadas y su frecuencia. Esta información es empleada únicamente para análisis estadístico y después la información se elimina de forma permanente. Usted puede eliminar las cookies en cualquier momento desde su ordenador. Sin embargo las cookies ayudan a proporcionar un mejor servicio de los sitios web, estás no dan acceso a información de su ordenador ni de usted, a menos de que usted así lo quiera y la proporcione directamente. Usted puede aceptar o negar el uso de cookies, sin embargo la mayoría de navegadores aceptan cookies automáticamente pues sirve para tener un mejor servicio web. También usted puede cambiar la configuración de su ordenador para declinar las cookies. Si se declinan es posible que no pueda utilizar algunos de nuestros servicios.

Enlaces a Terceros

Este sitio web pudiera contener en laces a otros sitios que pudieran ser de su interés. Una vez que usted de clic en estos enlaces y abandone nuestra página, ya no tenemos control sobre al sitio al que es redirigido y por lo tanto no somos responsables de los términos o privacidad ni de la protección de sus datos en esos otros sitios terceros. Dichos sitios están sujetos a sus propias políticas de privacidad por lo cual es recomendable que los consulte para confirmar que usted está de acuerdo con estas. Control de su información personal En cualquier momento usted puede restringir la recopilación o el uso de la información personal que es proporcionada a nuestro sitio web.  Cada vez que se le solicite rellenar un formulario, como el de alta de usuario, puede marcar o desmarcar la opción de recibir información por correo electrónico.  En caso de que haya marcado la opción de recibir nuestro boletín o publicidad usted puede cancelarla en cualquier momento. Esta compañía no venderá, cederá ni distribuirá la información personal que es recopilada sin su consentimiento, salvo que sea requerido por un juez con un orden judicial. Alternativa.click Se reserva el derecho de cambiar los términos de la presente Política de Privacidad en cualquier momento.
Save settings
Cookies settings