Environment variables (Español)

Una variable de entorno es un objeto con nombre que contiene información usada por uno o más programas. En términos simples, es una variable con un nombre y un valor. El valor de una variable de entorno puede ser, por ejemplo, la ubicación de todos los archivos ejecutables, el editor por defecto, o las configuraciones regionales del sistema. Puede que esta forma de administrar configuraciones parezca difícil de manejar; sin embargo, las variables de entorno representan un mecanismo simple para compartir configuraciones entre múltiples aplicaciones y procesos en Linux.

Esta traducción de Environment variables fue revisada el 2017-12-25. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Utilidades

El paquete coreutils contiene los programas printenv y env. Se pueden enlistar las variables de entorno actuales con:

$ printenv
Nota: Algunas variables de entorno son específicas a un usuario. Esto se puede comprobar comparando la salida de printenv como usuario sin privilegios contra la salida como root.

La utilidad env puede ser usada para ejecutar un comando bajo un entorno modificado. El siguiente ejemplo ejecutará xterm con la variable de entorno EDITOR ajustada a vim. Esto no afectará a la variable de entorno global EDITOR.

$ env EDITOR=vim xterm

El comando set, de Bash, permite cambiar los valores de las opciones del intérprete de línea de órdenes y colocar los parámetros posicionales, o mostrar los nombres y valores de las variables del intérprete de línea de órdenes. Para más información, se puede consultar la documentación de set: .

Cada proceso almacena sus variables de entorno en el archivo , el cuál contiene cada par de nombre y valor delimitados por un carácter nulo (). Se pude obtener un formato más legible con sed, por ejemplo, .

Cómo definir variables

Globalmente

La mayoría de las distribuciones de Linux permiten agregar o cambiar las definiciones de las variables de entorno en . Existen también archivos de configuración con variables de entorno específicas para algunos paquetes, como . En principio, cualquier script del intérprete de línea de órdenes se puede usar para inicializar variables de entorno, pero siguiendo convenciones tradicionales de UNIX, estas declaraciones deben estar presentes en sólo algunos archivos particulares.

Los siguientes archivos deben ser usados para definir variables de entorno globales: /etc/environment, y archivos del intérprete de línea de órdenes de configuración específicos. Cada uno de estos archivos tiene diferentes limitaciones, por lo que se debe seleccionar el adecuado de acuerdo a los propósitos de la variable.

  • /etc/environment es usado por el módulo pam_env y es independiente del lenguaje del intérprete de línea de órdenes, por lo que no se deben insertar scritps. Este archivo solamente acepta pares de la forma . Para más detalles se pueden consultar los manuales o .
  • inicializa variables para los intérpretes de línea de órdenes con inicio de sesión solamente. Este archivo sí permite scripts y puede ser usado por todos los intérpretes de línea de órdenes compatibles con Bash.

En este ejemplo se agrega la carpeta al para el usuario respectivo. Para hacer esto, solamente es necesario colocar lo siguiente en un archivo de configuración ( o ):

Por usuario

No siempre se requiere definir una variable de entorno de manera global. Por ejemplo, se puede querer agregar a la variable pero sin querer que todos los demás usuarios lo tengan en su

también. Las variables de entorno locales se pueden definir en muchos archivos distintos:
  • ~/.pam_environment es el archivo de usuario equivalente a , usado por el módulo pam_env. Detalles en y .

Para agregar una carpeta al para uso local, se puede colocar lo siguiente en :

export PATH="${PATH}:/home/nombre_de_usuario/bin"

Para actualizar la variable es necesario volver a iniciar sesión o evaluar el archivo como un script: .

Aplicaciones gráficas

Para colocar variables de entorno para aplicaciones gráficas, se pueden colocar las variables en xinitrc (o xprofile cuando se utiliza un administrador gráfico), por ejemplo:

Por sesión

En algunas ocasiones se necesitan definiciones aún más estrictas. Se puede querer correr temporalmente ejecutables desde un directorio específico sin tener que escribir la ruta absoluta de cada uno, o editar el archivo de configuración del intérprete de línea de órdenes para el poco tiempo que se ocuparán.

En estos casos, se puede definir la variable solamente en la sesión actual, usando el comando export. Mientras no se cierre la sesión, la variable usará las configuraciones temporales. Para agregar una carpeta al específico de una sesión se debe ejecutar:

$ export PATH="${PATH}:/home/nombre_de_usuario/tmp/usr/bin"

Ejemplos

Esta sección enlista algunas variables de entorno comunes usadas por un sistema Linux y describe sus valores.

  • indica el entorno de escritorio que está siendo usado (por sus siglas en inglés, Desktop Enviroment). xdg-open la usa para seleccionar las aplicaciones por defecto según el entorno. Para usar esta característica se necesitan instalar algunos paquetes adicionales: para GNOME, libgnomeAUR; para Xfce, . Algunos valores comunes para la variable son: , kde, , and .
La variable de entorno necesita ser exportada antes de iniciar el administrador de ventanas. Por ejemplo:
Esto hará que xdg-open use exo-open (el cuál es más amigable con el usuario) porque asume que está corriendo dentro de Xfce. Se puede utilizar exo-preferred-applications para configurar.
  • contiene una lista, separada por dos puntos, de directorios en los que el sistema buscará archivos ejecutables. Cuando un comando normal (por ejemplo, ls, rc-upadte o ic|emerge) es interpretado por el intérprete de línea de órdenes (por ejemplo, bash o zsh), este busca un archivo ejecutable con el mismo nombre en los directorios del y lo ejecuta. Para correr un ejecutable cuyo directorio no está enlistado en el , se debe escribir la ruta completa: .

.

  • contiene la ruta del directorio del usuario actual. Esta variable puede ser usada por las aplicaciones para asociar archivos de configuración (entre otros) al usuario actual.
  • PWD contiene la ruta al directori actual.
  • contiene la ruta al directorio anterior al actual; esot es, el valor de PWD andes de ejecutar cd.
  • contiene el tipo de terminal que se está ejecutando, por ejemplo, . Es usado por programas que se ejecutan en la terminal y que desean ocupar características específicas a cada tipo.
  • contiene el comando para correr el programa con el que se enlista el contenido de un archivo, por ejemplo, .
  • EDITOR contiene el comando para ejecutar el editor ligero de archivos de texto. Por ejemplo, se puede escribir un cambio interactivo entre gedit bajo X o nano:
export EDITOR="$(if [[ -n $DISPLAY ]]; then echo 'gedit'; else echo 'nano'; fi)"
  • contiene el comando para ejecutar el editor de texto usado para tareas más demandantes, tal como editar correo (por ejemplo, , vim, emacs etcétera).
  • contiene la ubicación de los correos electrónicos de entrada. La configuración tradicional es /var/spool/mail/$LOGNAME.
  • contiene la ruta al navegador web. Es útil establecerla en un archivo de configuración del intérprete de línea de órdenes de forma que cambie de manera dinámica según el entorno gráfico:
if [ -n "$DISPLAY" ]; then
    export BROWSER=firefox
else 
    export BROWSER=links
fi
  • y http_proxy contienen servidores FTP y HTTP, respectivamente:
ftp_proxy="ftp://192.168.0.1:21"
http_proxy="http://192.168.0.1:80"
  • contiene una lista separada por dos puntos con directorios en los cuales man busca páginas de manuales.
  • contiene una lista de directorios en los cuales el comando info busca páginas de información, por ejemplo, .
  • Se puede usar para colocar una zona horaria, distinta de la del sistema, a un usuario.. Las zonas enlistadas en se pueden usar como referencia.

Véase también

gollark: If a module doesn't exist it should simply infer it.
gollark: Why does Macron not have module inference?
gollark: The < messages continue. I blame <@738361430763372703>.
gollark: Not that the bridge is also an exit node.
gollark: To clarify, I mean the exit node is the thing sending things to my bridge.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.