Gentoo Logo

Renuncia de responsabilidad: Este manual ha sido sustituido por una versión más reciente y no tendrá soporte de aquí en adelante.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


5. Environment Variables

Contenido:

5.a. ¿Variables de Entorno?

¿Qué son?

Una variable de entorno es un objeto designado para contener información usada por una o más aplicaciones. Algunos usuarios (especialmente aquellos nuevos en Linux) encuentran esto un poco extraño o inmanejable. Sin embargo esto no es cierto: usando variables de entorno hace que cualquiera pueda cambiar una opción de configuración para una o más aplicaciones fácilmente.

Ejemplos Importantes

La siguiente tabla muestra un listado de variables de entorno usado por un sistema Linux y describe su uso. Los valores de ejemplo se encuentran después de la tabla.

Variable Descripción
PATH Esta variable contiene una lista de directorios separados por ":" en la cual el sistema buscará los archivos ejecutables. Al introducir el nombre de un ejecutable (como ls, rc-update o emerge) que no se encuentre en un de los directorios listados, el sistema no lo encontrará, (a menos que se introduzca la ruta completa, por ejemplo: /bin/ls).
ROOTPATH Esta variable tiene la misma función que PATH, pero únicamente contiene los directorios que el sistema debe revisar cuando el usuario root introduce un comando.
LDPATH Esta variable contiene una lista de directorios separados por ":" en la cual el enlazador dinámico busca para encontrar una librería.
MANPATH Esta variable contiene una lista de directorios separados por ":" en la cual el comando man busca las páginas de manual.
INFODIR Esta variable contiene una lista de directorios separados por ":" en la cual el comando info busca las páginas info.
PAGER Esta variable contiene la ruta hacia el programa utilizado para mostrar el contenido de los ficheros (como less o more).
EDITOR Esta variable contiene la ruta hacia el programa utilizado para modificar el contenido de los archivos (como nano o vi).
KDEDIRS Esta variable contiene una lista de directorios separados por ":" los cuales contienen material específico de KDE.
CLASSPATH Esta variable contiene una lista de directorios separados por ":" los cuales contienen las clases de Java.
CONFIG_PROTECT Esta variable una lista de directorios separados por espacio los cuales deben ser protegidos por Portage durante las actualizaciones..
CONFIG_PROTECT_MASK Esta variable una lista de directorios separados por espacio los cuales no deben ser protegidos por Portage durante las actualizaciones.

A continuación puedes encontrar ejemplos de definiciones para todas estas variables:

Listado de Código 1.1: Definiciones de ejemplo

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf

5.b. Definiendo variables globalmente

El directorio /etc/env.d

Para centralizar la definición de estas variables, Gentoo introduce el directorio /etc/env.d. Dentro de este directorio se encuentran varios ficheros como por ejemplo 00basic, 05gcc, etc. los cuales contienen las variables necesarias para la aplicación de la cual llevan el nombre.

Por ejemplo, al instalar gcc, un fichero llamado 05gcc que contiene la definición de las siguientes variables, fue creado por el ebuild:

Listado de Código 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Otras distribuciones le piden modificar o añadir definiciones de variables de entorno semejantes en /etc/profile o en otros sitios. Por otro lado, Gentoo nos hace (y a Portage) más fácil mantener y manejar las variables de entorno sin tener que prestar atención a los numerosos ficheros que pueden contenerlas.

Por ejemplo, cuando gcc es actualizado, también es actualizado el fichero /etc/env.d/05gcc sin ser necesaria ninguna interacción por parte del usuario.

Esto no solo beneficia a Portage, sino también al usuario. En ocasiones se podrá pedir establecer cierta variable de entorno para todo el sistema. Como ejemplo, tomamos la variable http_proxy. En lugar de perder el tiempo con /etc/profile, puedes crear el fichero (/etc/env.d/99local) y introducir la(s) definición(es) en él:

Listado de Código 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Usando el mismo fichero para todas las variables, se obtiene una visión rápida de las variables que definidas por uno mismo.

El script env-update

Varios archivos de /etc/env.d definen la variable PATH. esto no es un error: cuando ejecute env-update, este concatenará las múltiples definiciones antes de actualizar las variables de entorno, haciendo más fácil a los paquetes (o usuarios) añadir sus propias opciones en las variables de entorno sin interferir con los valores ya existentes.

El script env-update concatenará los valores alfabéticamente ordenados por el nombre de los ficheros de /etc/env.d. Esto es así porque muchos de los ficheros de /etc/env.d empiezan por un número.

Listado de Código 2.3: Update order used by env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Cuando ejecute env-update, el script creará todas las variables de entorno y las colocará en /etc/profile.env (el cual es usado por /etc/profile). Además, también extraerá la información de la variable LDPATH y la usará para crear /etc/ld.so.conf. Después de esto, ejecutará ldconfig para recrear el archivo usado por el enlazador dinámico: /etc/ld.so.cache.

Si quiere observar el efecto de env-update inmediatamente después de ejecutarlo, ejecute el siguiente comando para actualizar su entorno. Posiblemente, los usuarios que instalaron Gentoo ellos mismos, recordarán estas instrucciones de la instalación:

Listado de Código 2.4: Actualizando el entorno

# env-update && source /etc/profile

5.c. Definiendo variables locales

Específicas de usuario

No siempre queremos definir variables de entorno globales. Por ejemplo, podríamos querer añadir /home/my_user/bin a la variable PATH, pero no queremos que todos los usuarios de nuestro sistema lo tengan en su PATH. Si queremos definir una variable localmente, debemos usar ~/.bashrc o ~/.bash_profile:

Listado de Código 3.1: Extendiendo el PATH para uso local en: ~/.bashrc

PATH="${PATH}:/home/my_user/bin"

Cuando vuelva a iniciar la sesión, su variable PATH será actualizada.

Específicas de sesión

En ocasiones, se requieren definiciones aún más estrictas. Puede querer usar binarios de un directorio temporal que ha creado sin tener que usar la trayectoria completa a los binarios o sin editar ~/.bashrc. Para estos momentos necesitará esto.

En este caso, puede definir la variable PATH en su sesión activa usando el comando export. Mientra no cierre la sesión, la variable PATH usará los valores temporales.

Listado de Código 3.2: Definiendo una variable específica a la sesión

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

[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 21 de noviembre, 2004

Esta traducción ha dejado de tener soporte

Sumario: With Gentoo you can easily manage the environment variables for your system. This chapter explains how you do that, and also describes frequently used variables.

Sven Vermeulen
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Lars Weiler
Editor

Jochen Maes
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.