Difference between revisions of "Environment variables (Español)"

From ArchWiki
Jump to navigation Jump to search
(Se agrega sección con ejemplos. Avance de traducción.)
m (corrección de enlace al artículo en español)
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
[[en:Environment variables]]
 
[[en:Environment variables]]
 
[[ja:環境変数]]
 
[[ja:環境変数]]
 +
[[pt:Environment variables]]
 
[[ru:Environment variables]]
 
[[ru:Environment variables]]
 
[[zh-hans:Environment variables]]
 
[[zh-hans:Environment variables]]
{{Related articles start}}
+
{{TranslationStatus (Español)|Environment variables|2017-12-22|ID del historial}}
 +
{{Related articles start (Español)}}
 
{{Related|Default applications}}
 
{{Related|Default applications}}
 
{{Related articles end}}
 
{{Related articles end}}
{{TranslationStatus (Español)|Environment variables|22/12/17|ID del historial}}
 
  
 
+
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  
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.
 
configuraciones entre múltiples aplicaciones y procesos en Linux.
  
 
== Utilidades ==
 
== Utilidades ==
  
El paquete {{Pkg|coreutils}} contiene los programas ''printenv'' y ''env''.  
+
El paquete {{Pkg|coreutils}} contiene los programas ''printenv'' y ''env''. Se pueden enlistar las variables de entorno actuales con:
Se pueden enlistar las variables de entorno actuales con:
 
  
 
  $ printenv
 
  $ printenv
Line 29: Line 22:
 
{{Note|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''.}}
 
{{Note|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 {{ic|env}} puede ser usada para ejecutar un comando bajo un  
+
La utilidad {{ic|env}} puede ser usada para ejecutar un comando bajo un entorno modificado. El siguiente ejemplo ejecutará ''xterm'' con la variable de entorno {{ic|EDITOR}} ajustada a {{ic|vim}}. Esto no afectará a la variable de entorno global {{ic|EDITOR}}.
entorno modificado. El siguiente ejemplo ejecutará ''xterm'' con la variable  
 
de entorno {{ic|EDITOR}} ajustada a {{ic|vim}}. Esto no afectará a la variable  
 
de entorno global {{ic|EDITOR}}.
 
  
 
  $ env EDITOR=vim xterm
 
  $ env EDITOR=vim xterm
  
El comando ''set'', de [[Bash]], permite cambiar los valores de las opciones  
+
El comando ''set'', de [[Bash (Español)|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'':  
de shell y colocar los parámetros posicionales, o mostrar los nombres y  
 
valores de las variables de shell. Para más información, se puede consultar la  
 
documentación de ''set'':  
 
 
[http://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin].
 
[http://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin].
  
Cada proceso almacena sus variables de entorno en el archivo  
+
Cada proceso almacena sus variables de entorno en el archivo {{ic|/proc/$PID/environ}}, el cuál contiene cada par de nombre y valor  
{{ic|/proc/$PID/environ}}, el cuál contiene cada par de nombre y valor  
+
delimitados por un carácter nulo ({{ic|\x0}}). Se pude obtener un formato más legible con [[sed]], por ejemplo, {{ic|sed 's:\x0:\n:g' /proc/$PID/environ}}.
delimitados por un carácter nulo ({{ic|\x0}}). Se pude obtener un formato más  
 
legible con [[sed]], por ejemplo,  
 
{{ic|sed 's:\x0:\n:g' /proc/$PID/environ}}.
 
  
 
== Cómo definir variables ==
 
== Cómo definir variables ==
Line 52: Line 36:
 
=== Globalmente ===
 
=== Globalmente ===
  
La mayoría de las distribuciones de Linux permiten agregar o cambiar las  
+
La mayoría de las distribuciones de Linux permiten agregar o cambiar las definiciones de las variables de entorno en {{ic|/etc/profile}}. Existen también archivos de configuración con variables de entorno específicas para  
definiciones de las variables de entorno en {{ic|/etc/profile}}. Existen  
+
algunos paquetes, como {{ic|/etc/locale.conf}}. 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  
también archivos de configuración con variables de entorno específicas para  
 
algunos paquetes, como {{ic|/etc/locale.conf}}. En principio, cualquier script  
 
de shell 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.
 
en sólo algunos archivos particulares.
  
{{Bad translation|(N. de T.) En la versión original se le dice al lector que se asegure de mantener y administrar las variables de entorno. Considero que esta indicación resulta ambigua para la mayoría de los lectores.}}
+
{{Bad translation (Español)|(N. de T.) En la versión original se le dice al lector que se asegure de mantener y administrar las variables de entorno. Considero que esta indicación resulta ambigua para la mayoría de los lectores.}}
  
Los siguientes archivos deben ser usados para definir variables de entorno  
+
Los siguientes archivos deben ser usados para definir variables de entorno globales: {{ic|/etc/environment}}, {{ic|/etc/profile}} y archivos del intérprete de línea de órdenes de configuración específicos. Cada uno de estos archivos tiene diferentes  
globales: {{ic|/etc/environment}}, {{ic|/etc/profile}} y archivos shell de  
+
limitaciones, por lo que se debe seleccionar el adecuado de acuerdo a los propósitos de la variable.
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.
 
  
* {{ic|/etc/environment}} es usado por el módulo pam_env y es independiente del lenguaje de shell, por lo que no se deben insertar scritps. Este archivo solamente acepta pares de la forma {{ic|1=''variable=valor''}}. Para más detalles se pueden consultar los manuales {{man|8|pam_env}} o {{man|5|pam_env.conf}}.
+
* {{ic|/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 {{ic|1=''variable=valor''}}. Para más detalles se pueden consultar los manuales {{man|8|pam_env}} o {{man|5|pam_env.conf}}.
  
* Los archivos de configuración global de [[shell]] inicializan variables y ejecutan scripts. Por ejemplo [[Bash#Configuration files]] o [[Zsh#Startup/Shutdown files]].
+
* Los archivos de configuración global del [[shell (Español)|intérprete de línea de órdenes]] inicializan variables y ejecutan scripts. Por ejemplo [[Bash (Español)#Archivos de configuración]] o [[Zsh#Startup/Shutdown files]].
  
* {{ic|/etc/profile}} inicializa variables para shells con login solamente. Este archivo sí permite scripts y puede ser usado por todos los shells compatibles con [[wikipedia:Bourne shell|Bash]].
+
* {{ic|/etc/profile}} 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 [[wikipedia:Bourne shell|Bash]].
  
En este ejemplo se agrega la carpeta {{ic|~/bin}} al {{ic|PATH}} para el  
+
En este ejemplo se agrega la carpeta {{ic|~/bin}} al {{ic|PATH}} para el usuario respectivo. Para hacer esto, solamente es necesario colocar lo siguiente en un archivo de configuración ({{ic|/etc/profile}} o {{ic|/etc/bash.bashrc}}):
usuario respectivo. Para hacer esto, solamente es necesario colocar lo  
 
siguiente en un archivo de configuración ({{ic|/etc/profile}} o  
 
{{ic|/etc/bash.bashrc}}):
 
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 93: Line 67:
 
{{Note|El demonio dbus y la instancia de usuario de systemd no heredan ninguna de las variables de entorno definidas en lugares como {{ic|~/.bashrc}}. Esto significa que, por ejemplo, programas activados por dbus, como los archivos de Gnome no las usarán por defecto. Consulte [[Systemd/User#Environment variables]].}}
 
{{Note|El demonio dbus y la instancia de usuario de systemd no heredan ninguna de las variables de entorno definidas en lugares como {{ic|~/.bashrc}}. Esto significa que, por ejemplo, programas activados por dbus, como los archivos de Gnome no las usarán por defecto. Consulte [[Systemd/User#Environment variables]].}}
  
No siempre se requiere definir una variable de entorno de manera global. Por  
+
No siempre se requiere definir una variable de entorno de manera global. Por ejemplo, se puede querer agregar {{ic|/home/my_user/bin}} a la variable {{ic|PATH}} pero sin querer que todos los demás usuarios lo tengan en su  
ejemplo, se puede querer agregar {{ic|/home/my_user/bin}} a la variable  
+
{{ic|PATH}} también. Las variables de entorno locales se pueden definir en muchos archivos distintos:
{{ic|PATH}} pero sin querer que todos los demás usuarios lo tengan en su  
 
{{ic|PATH}} también. Las variables de entorno locales se pueden definir en  
 
muchos archivos distintos:
 
  
 
* {{ic|~/.pam_environment}} es el archivo de usuario equivalente a  {{ic|/etc/security/pam_env.conf}} [https://github.com/linux-pam/linux-pam/issues/6], usado por el módulo pam_env. Detalles en {{man|8|pam_env}} y {{man|5|pam_env.conf}}.
 
* {{ic|~/.pam_environment}} es el archivo de usuario equivalente a  {{ic|/etc/security/pam_env.conf}} [https://github.com/linux-pam/linux-pam/issues/6], usado por el módulo pam_env. Detalles en {{man|8|pam_env}} y {{man|5|pam_env.conf}}.
 
   
 
   
* Archivos de configuración de usuario de [[shell]], por ejemplo [[Bash#Configuration files]] o [[Zsh#Startup/Shutdown files]].
+
* Archivos de configuración de usuario del [[shell (Español)|intérprete de línea de órdenes]], por ejemplo [[Bash (Español)#Archivos de configuración]] o [[Zsh#Startup/Shutdown files]].
  
* {{ic|~/.profile}} es usado por muchos shells como alternativa por defecto, [[wikipedia:Unix shell#Configuration files]].
+
* {{ic|~/.profile}} es usado por muchos intérpretes de línea de órdenes como alternativa por defecto, [[wikipedia:Unix shell#Configuration files]].
  
Para agregar una carpeta al {{ic|PATH}} para uso local, se puede colocar lo  
+
Para agregar una carpeta al {{ic|PATH}} para uso local, se puede colocar lo siguiente en {{ic|~/.bash_profile}}:
siguiente en {{ic|~/.bash_profile}}:
 
  
 
  export PATH="${PATH}:/home/nombre_de_usuario/bin"
 
  export PATH="${PATH}:/home/nombre_de_usuario/bin"
  
Para actualizar la variable es necesario volver a iniciar sesión o evaluar el  
+
Para actualizar la variable es necesario volver a iniciar sesión o evaluar el archivo como un script: {{ic|$ source ~/.bash_profile}}.
archivo como un script: {{ic|$ source ~/.bash_profile}}.
 
  
 
==== Aplicaciones gráficas ====
 
==== Aplicaciones gráficas ====
  
Para colocar variables de entorno para aplicaciones gráficas, se pueden  
+
Para colocar variables de entorno para aplicaciones gráficas, se pueden colocar las variables en [[xinitrc (Español)|xinitrc]] (o [[xprofile]] cuando se utiliza un [[display manager|administrador gráfico]]), por ejemplo:
colocar las variables en [[xinitrc]] (o [[xprofile]] cuando se utiliza un  
 
[[display manager|administrador gráfico]]), por ejemplo:
 
  
 
{{hc|1=~/.xinitrc|2=
 
{{hc|1=~/.xinitrc|2=
Line 126: Line 93:
 
=== Por sesión ===
 
=== Por sesión ===
  
En algunas ocasiones se necesitan definiciones aún más estrictas. Se puede  
+
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  
querer correr temporalmente ejecutables desde un directorio específico sin  
+
configuración del intérprete de línea de órdenes para el poco tiempo que se ocuparán.
tener que escribir la ruta absoluta de cada uno, o editar el archivo de  
 
configuración de shell para el poco tiempo que se ocuparán.
 
  
En estos casos, se puede definir la variable {{ic|PATH}} solamente en la  
+
En estos casos, se puede definir la variable {{ic|PATH}} solamente en la sesión actual, usando el comando ''export''. Mientras no se cierre la sesión, la variable {{ic|PATH}} usará las configuraciones temporales. Para agregar  
sesión actual, usando el comando ''export''. Mientras no se cierre la sesión,  
 
la variable {{ic|PATH}} usará las configuraciones temporales. Para agregar  
 
 
una carpeta al {{ic|PATH}} específico de una sesión se debe ejecutar:  
 
una carpeta al {{ic|PATH}} específico de una sesión se debe ejecutar:  
  
Line 140: Line 103:
 
== Ejemplos ==
 
== Ejemplos ==
  
Esta sección enlista algunas variables de entorno comunes usadas por un  
+
Esta sección enlista algunas variables de entorno comunes usadas por un sistema Linux y describe sus valores.
sistema Linux y describe sus valores.
 
  
* {{ic|DE}} indica el entorno de escritorio que está siendo usado (por sus siglas en inglés, ''D''esktop ''E''nviroment). [[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]], {{AUR|libgnome}}; para [[Xfce]], {{pkg|exo}}. Algunos valores comunes para la variable {{ic|DE}} son: {{ic|gnome}}, {{ic|kde}}, {{ic|xfce}}, {{ic|lxde}} and {{ic|mate}}.
+
* {{ic|DE}} indica el entorno de escritorio que está siendo usado (por sus siglas en inglés, ''D''esktop ''E''nviroment). [[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 (Español)|GNOME]], {{AUR|libgnome}}; para [[Xfce]], {{pkg|exo}}. Algunos valores comunes para la variable {{ic|DE}} son: {{ic|gnome}}, {{ic|kde}}, {{ic|xfce}}, {{ic|lxde}} and {{ic|mate}}.
  
 
:La variable de entorno {{ic|DE}} necesita ser exportada antes de iniciar el administrador de ventanas. Por ejemplo:
 
:La variable de entorno {{ic|DE}} necesita ser exportada antes de iniciar el administrador de ventanas. Por ejemplo:
Line 154: Line 116:
 
: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.
 
: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.
  
* {{ic|PATH}} 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 shell (por ejemplo, ''bash'' o ''zsh''), este busca un archivo ejecutable con el mismo nombre en los directorios del {{ic|PATH}} y lo ejecuta. Para correr un ejecutable cuyo directorio no está enlistado en el {{ic|PATH}}, se debe escribir la ruta completa: {{ic|/bin/ls}}.
+
* {{ic|PATH}} 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 {{ic|PATH}} y lo ejecuta. Para correr un ejecutable cuyo directorio no está enlistado en el {{ic|PATH}}, se debe escribir la ruta completa: {{ic|/bin/ls}}.
 
{{Note|Por razones de seguridad es recomendable no incluir el directorio actual ({{ic|.}}) en el {{ic|PATH}}: se puede conducir al usuario a ejecutar archivos malignos}}.
 
{{Note|Por razones de seguridad es recomendable no incluir el directorio actual ({{ic|.}}) en el {{ic|PATH}}: se puede conducir al usuario a ejecutar archivos malignos}}.
  
Line 163: Line 125:
 
* {{ic|OLDPWD}} contiene la ruta al directorio anterior al actual; esot es, el valor de {{ic|PWD}} andes de ejecutar ''cd''.
 
* {{ic|OLDPWD}} contiene la ruta al directorio anterior al actual; esot es, el valor de {{ic|PWD}} andes de ejecutar ''cd''.
  
* {{ic|SHELL}} contiene la ruta al [http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 shell del usuario]. Nótese que este no es necesariamente el mismo shell que se está ejecutando, aunque [[Bash]] coloca esta variable al iniciar.
+
* {{ic|SHELL}} contiene la ruta al [http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 intérprete de línea de órdenes del usuario]. Nótese que este no es necesariamente el mismo intérprete de línea de órdenes que se está ejecutando, aunque [[Bash (Español)|Bash]] coloca esta variable al iniciar.
  
 
* {{ic|TERM}} contiene el tipo de terminal que se está ejecutando, por ejemplo, {{ic|xterm-256color}}. Es usado por programas que se ejecutan en la terminal y que desean ocupar características específicas a cada tipo.
 
* {{ic|TERM}} contiene el tipo de terminal que se está ejecutando, por ejemplo, {{ic|xterm-256color}}. Es usado por programas que se ejecutan en la terminal y que desean ocupar características específicas a cada tipo.
Line 177: Line 139:
 
* {{ic|MAIL}} contiene la ubicación de los correos electrónicos de entrada. La configuración tradicional es {{ic|/var/spool/mail/$LOGNAME}}.
 
* {{ic|MAIL}} contiene la ubicación de los correos electrónicos de entrada. La configuración tradicional es {{ic|/var/spool/mail/$LOGNAME}}.
  
* {{ic|BROWSER}} contiene la ruta al navegador web. Es útil establecerla en un archivo de configuración de shell de manera que cambie de manera dinámica según el entorno gráfico:
+
* {{ic|BROWSER}} 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 <nowiki>[</nowiki> -n "$DISPLAY" <nowiki>]</nowiki>; then
 
  if <nowiki>[</nowiki> -n "$DISPLAY" <nowiki>]</nowiki>; then

Latest revision as of 23:05, 20 November 2018

Estado de la traducción
Este artículo es una traducción de Environment variables, revisada por última vez el 2017-12-22. Si advierte que la versión inglesa del historial ha cambiado puede ayudar a actualizar la traducción, bien por usted mismo o bien avisando al equipo de traducción.

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.

Utilidades

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

$ printenv
Note: 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: [1].

Cada proceso almacena sus variables de entorno en el archivo /proc/$PID/environ, el cuál contiene cada par de nombre y valor delimitados por un carácter nulo (\x0). Se pude obtener un formato más legible con sed, por ejemplo, sed 's:\x0:\n:g' /proc/$PID/environ.

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 /etc/profile. Existen también archivos de configuración con variables de entorno específicas para algunos paquetes, como /etc/locale.conf. 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.

Tango-preferences-desktop-locale-modified.pngLa traducción de este artículo o sección no refleja el texto original.Tango-preferences-desktop-locale-modified.png

Motivos: (N. de T.) En la versión original se le dice al lector que se asegure de mantener y administrar las variables de entorno. Considero que esta indicación resulta ambigua para la mayoría de los lectores. (Discusión en Talk:Environment variables (Español)#)

Los siguientes archivos deben ser usados para definir variables de entorno globales: /etc/environment, /etc/profile 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 variable=valor. Para más detalles se pueden consultar los manuales pam_env(8) o pam_env.conf(5).
  • /etc/profile 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 ~/bin al PATH para el usuario respectivo. Para hacer esto, solamente es necesario colocar lo siguiente en un archivo de configuración (/etc/profile o /etc/bash.bashrc):

# Si el ID del usuario es mayor o igual a 1000 y la carpeta ~/bin existe y
# aún no se encuentra definida en el $PATH,
# entonces se agrega ~/bin al $PATH.
if [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin) ]]
then
    export PATH="${PATH}:$HOME/bin"
fi

Por usuario

Note: El demonio dbus y la instancia de usuario de systemd no heredan ninguna de las variables de entorno definidas en lugares como ~/.bashrc. Esto significa que, por ejemplo, programas activados por dbus, como los archivos de Gnome no las usarán por defecto. Consulte Systemd/User#Environment variables.

No siempre se requiere definir una variable de entorno de manera global. Por ejemplo, se puede querer agregar /home/my_user/bin a la variable PATH pero sin querer que todos los demás usuarios lo tengan en su PATH también. Las variables de entorno locales se pueden definir en muchos archivos distintos:

  • ~/.pam_environment es el archivo de usuario equivalente a /etc/security/pam_env.conf [2], usado por el módulo pam_env. Detalles en pam_env(8) y pam_env.conf(5).

Para agregar una carpeta al PATH para uso local, se puede colocar lo siguiente en ~/.bash_profile:

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: $ source ~/.bash_profile.

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:

~/.xinitrc
export PATH="${PATH}:~/scripts"
export GUIVAR=value

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 PATH solamente en la sesión actual, usando el comando export. Mientras no se cierre la sesión, la variable PATH usará las configuraciones temporales. Para agregar una carpeta al PATH 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.

  • DE 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, exo. Algunos valores comunes para la variable DE son: gnome, kde, xfce, lxde and mate.
La variable de entorno DE necesita ser exportada antes de iniciar el administrador de ventanas. Por ejemplo:
~/.xinitrc
export DE="xfce"
exec openbox
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.
  • PATH 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 PATH y lo ejecuta. Para correr un ejecutable cuyo directorio no está enlistado en el PATH, se debe escribir la ruta completa: /bin/ls.
Note: Por razones de seguridad es recomendable no incluir el directorio actual (.) en el PATH: se puede conducir al usuario a ejecutar archivos malignos

.

  • HOME 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.
  • OLDPWD contiene la ruta al directorio anterior al actual; esot es, el valor de PWD andes de ejecutar cd.
  • TERM contiene el tipo de terminal que se está ejecutando, por ejemplo, xterm-256color. Es usado por programas que se ejecutan en la terminal y que desean ocupar características específicas a cada tipo.
  • PAGER contiene el comando para correr el programa con el que se enlista el contenido de un archivo, por ejemplo, /bin/less.
  • 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)"
  • VISUAL contiene el comando para ejecutar el editor de texto usado para tareas más demandantes, tal como editar correo (por ejemplo, vi, vim, emacs etcétera).
  • MAIL contiene la ubicación de los correos electrónicos de entrada. La configuración tradicional es /var/spool/mail/$LOGNAME.
  • BROWSER 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
  • ftp_proxy 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"
  • MANPATH contiene una lista separada por dos puntos con directorios en los cuales man busca páginas de manuales.
Note: En /etc/profile hay un comentario que dice «Man es mucho mejor que nosotros en averiguar esto», por lo que, generalmente, es mucho mejor dejar esta variable con su valor por defecto: /usr/share/man:/usr/local/share/man
  • INFODIR contiene una lista de directorios en los cuales el comando info busca páginas de información, por ejemplo, /usr/share/info:/usr/local/share/info.
  • TZ Se puede usar para colocar una zona horaria, distinta de la del sistema, a un usuario.. Las zonas enlistadas en /usr/share/zoneinfo/ se pueden usar como referencia.

Véase también