Section: Manual del Programador Linux (5)
Updated: 21 Octubre 1996
Index Return to Main
Contents
extern char **environ;
La variable environ apunta a un vector de cadenas llamado `el entorno'. (Esta variable se debe declarar en el programa de usuario, aunque se declara en el fichero cabecera unistd.h en el caso de que los ficheros cabecera procedan de libc4 o libc5 y en el caso de que procedan de glibc y se haya definido _GNU_SOURCE.) Cuando un proceso comienza, exec(3) le proporciona este vector de cadenas. Por convenio, estas cadenas son de la forma `nombre=valor'. Algunos ejemplos comunes son:
Se pueden poner otros nombres en el entorno mediante la orden export y `nombre=valor' en sh(1), o mediante la orden setenv en csh(1). También se pueden poner argumentos en el entorno cuando se llama a exec(2). Un programa en C puede manipular su entorno mediante las funciones getenv(), putenv(), setenv() y unsetenv().
Observe que el comportamiento de muchos programas y funciones de biblioteca se ve influenciado por la presencia o valor de ciertas variables de entorno. Una colección al azar:
Las variables LANG, LANGUAGE, NLSPATH,
LOCPATH, LC_ALL, LC_MESSAGES,
etc., tienen influencia en el manejo de localizaciones.
TMPDIR tiene influencia sobre el prefijo de nombres de ficheros creados por tempnam() y otras rutinas, el directorio temporal utilizado por sort(1) y otros programas, etc.
LD_LIBRARY_PATH, LD_PRELOAD y otras variables que comienzan por LD_ tienen influencia sobre el comportamiento del enlazador/cargador dinámico.
POSIXLY_CORRECT hace que ciertos programas y funciones de biblioteca sigan las prescripciones de POSIX.
El comportamiento de malloc() viene determinado por variables cuyos nombres comienzan por MALLOC_.
La variable HOSTALIAS da el nombre de un fichero que contiene alias que utilizará la función gethostbyname().
TZ y TZDIR proporcionan información sobre el huso horario.
TERMCAP da información sobre cómo manejar una terminal dada (o da el nombre de un fichero que contiene esa información).
Etc., etc., etc.
Claramente aquí hay un riesgo en cuanto a la seguridad. Muchas veces una orden del sistema ha sido forzada a actuar de forma malintencionadamente incorrecta por un usuario que ha especificado valores inusuales para IFS o LD_LIBRARY_PATH.
Antes de usar una nueva variable, hay que asegurarse de no emplear un nombre utilizado por el intérprete, como: MAIL, PS1, PS2, IFS etc.
(1), sh(1), bash(1), csh(1), tcsh(1), zsh(1), execve(2), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3). system(3).
This document was created by man2html, using
the manual pages.
Time: 06:16:28 GMT, January 22, 2005