Diferencia entre revisiones de «Variable de entorno»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Maose (discusión · contribs.)
m Corrección de erratas menores
Maose (discusión · contribs.)
m Se agregan enlaces internos y se realizan correcciones menores.
Línea 1: Línea 1:
Una '''variable de entorno''' es una variable dinámica que puede afectar al comportamiento de los procesos en ejecución en un ordenador.
Una '''variable de entorno''' es una [[Variable (programación)|variable]] dinámica que puede afectar al comportamiento de los [[Proceso (informática)|procesos]] en ejecución en un [[Computadora|ordenador]].


Son parte del entorno en el que se ejecuta un proceso. Por ejemplo, un proceso en ejecución puede consultar el valor de la variable de entorno TEMP para descubrir una ubicación adecuada para almacenar archivos temporales, o la variable HOME o USERPROFILE para encontrar la estructura de directorios propiedad del usuario que ejecuta el proceso.
Son parte del entorno en el que se ejecuta un proceso. Por ejemplo, un proceso en ejecución puede consultar el valor de la variable de entorno TEMP para descubrir una ubicación adecuada para almacenar [[Archivo temporal|archivos temporales]], o la variable HOME o USERPROFILE para encontrar la estructura de [[Directorio|directorios]] propiedad del [[Usuario (informática)|usuario]] que ejecuta el proceso.


Fueron introducidas en su forma moderna en 1979 con la versión 7 de Unix, por lo que están incluidas en todos los sabores y variantes del sistema operativo Unix a partir de ese momento, incluyendo Linux y macOS. Desde PC DOS 2.0 en 1982, todos los sistemas operativos de Microsoft, incluyendo Microsoft Windows y OS/2, también las han incluido como una característica, aunque con sintaxis, uso y nombres de variables estándar algo diferentes.
Fueron introducidas en su forma moderna en [[1979]] con la [[UNIX Versión 7|versión 7 de Unix]], por lo que están incluidas en todos los sabores y variantes del sistema operativo [[Unix]] a partir de ese momento, incluyendo [[GNU/Linux|Linux]] y [[macOS]]. Desde [[IBM PC DOS|PC DOS]] 2.0 en [[1982]], todos los sistemas operativos de [[Microsoft]], incluyendo [[Microsoft Windows]] y [[OS/2]], también las han incluido como una característica, aunque con sintaxis, uso y nombres de variables estándar algo diferentes.


== Obteniendo y dando valores a las variables de entorno ==
== Obtener y dar valores a las variables de entorno ==
Es posible acceder al valor de una variable, ya sea tanto para consultarlo como para modificarlo, tanto dentro de [[script]]s como desde la [[línea de comandos]]. La forma en que se accede al contenido de una variable varía para cada [[sistema operativo]]. En el caso de sistemas [[Unix]], depende del [[intérprete de comandos]] (o ''shell'') que se use, pues, este es el encargado del manejo de las variables de entorno.
Es posible acceder al valor de una variable, ya sea tanto para consultarlo como para modificarlo, tanto dentro de [[script]]s como desde la [[línea de comandos]]. La forma en que se accede al contenido de una variable varía para cada [[sistema operativo]]. En el caso de sistemas Unix, depende del [[intérprete de comandos]] (o ''shell'') que se use, pues este es el encargado del manejo de las variables de entorno.


=== MS-DOS y Windows ===
=== MS-DOS y Windows ===
Por ejemplo, para mostrar el contenido de la variable de entorno PATH (que mantiene la [[Ruta (informática)|ruta]] de búsqueda de programas en el sistema) debe escribirse en la línea de comandos:
Por ejemplo, para mostrar el contenido de la variable de entorno PATH (que mantiene la [[Ruta (informática)|ruta]] de búsqueda de programas en el sistema) debe escribirse en la línea de [[Comando (informática)|comandos]]:


echo %PATH%
echo %PATH%


Observaciones: El comando <tt>SET</tt>, sin argumentos, muestra todas las variables de entorno junto con sus respectivos valores.
Observaciones: El comando <tt>SET</tt>, sin [[Argumento (informática)|argumentos]], muestra todas las variables de entorno junto con sus respectivos valores.


Para asignar un valor a una variable se usa:<ref>[http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/set.mspx?mfr=true El comando SET en la documentación de Windows XP]</ref>
Para asignar un valor a una variable se usa:<ref>[http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/set.mspx?mfr=true El comando SET en la documentación de Windows XP]</ref>
Línea 21: Línea 21:
Cabe mencionar que esta asignación será visible desde todos los programas iniciados a partir de ese momento desde la misma ventana de la línea de comandos, pero no desde otras, ni se mantendrá de forma permanente.
Cabe mencionar que esta asignación será visible desde todos los programas iniciados a partir de ese momento desde la misma ventana de la línea de comandos, pero no desde otras, ni se mantendrá de forma permanente.


Para lograr un cambio permanente, se puede usar el comando <tt>SETX</tt> (opcional, disponible dentro de las Herramientas de Soporte).<ref>[http://www.microsoft.com/downloads/details.aspx?FamilyID=49AE8576-9BB9-4126-9761-BA8011FABF38&displayLang=es Herramientas de soporte técnico de Windows XP Service Pack 2]</ref> O bien, desde el escritorio de Windows XP:
Para lograr un cambio permanente (lo que en informática se conoce como [[Persistencia (informática)|persistencia]]), se puede usar el comando <tt>SETX</tt> (opcional, disponible dentro de las Herramientas de Soporte).<ref>[http://www.microsoft.com/downloads/details.aspx?FamilyID=49AE8576-9BB9-4126-9761-BA8011FABF38&displayLang=es Herramientas de soporte técnico de Windows XP Service Pack 2]</ref> O bien, desde el escritorio de Windows XP:


*Hacer clic con el botón secundario del [[Ratón (informática)|ratón]] sobre el icono de ''Mi PC''.
*Hacer clic con el botón secundario del [[Ratón (informática)|ratón]] sobre el icono de ''Mi PC''.
Línea 78: Línea 78:


;%PATHEXT%
;%PATHEXT%
Esta variable contiene una lista separada por punto y coma con las extensiones conocidas de los archivos ejecutables. Si el nombre de un ejecutable termina con una extensión incluida en esta lista, es posible omitir dicha extensión al invocar el programa. Un valor típico es </tt>.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH</tt>. Por ejemplo, debido a que .EXE está en la lista, podemos escribir <tt>firefox</tt> (en lugar de <tt>firefox.exe</tt>) para invocarlo.
Esta variable contiene una lista separada por punto y coma con las [[Extensión de archivo|extensiones]] conocidas de los [[Ejecutable|archivos ejecutables]]. Si el nombre de un ejecutable termina con una extensión incluida en esta lista, es posible omitir dicha extensión al invocar el programa. Un valor típico es .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH. Por ejemplo, debido a que .EXE está en la lista, podemos escribir <tt>firefox</tt> (en lugar de <tt>firefox.exe</tt>) para invocarlo.


;%TEMP% y %TMP%
;%TEMP% y %TMP%


Estas variables contienen la ruta al directorio donde almacenar archivos temporales. Nótese que %TEMP% en MS-DOS 5 apuntaba a menudo a C:\DOS, por lo que eliminar todos los archivos de %TEMP% podía causar muchos problemas. El creador del navegador web Arachne no consideró esta posibilidad, lo que le generó varias críticas.<ref>[http://www.mail-archive.com/arachne@arachne.cz/msg06852.html Hilo en la lista de correo de ARACHNE acerca del daño potencial]</ref>
Estas variables contienen la ruta al directorio donde almacenar archivos temporales. Nótese que %TEMP% en [[MS-DOS]] 5 apuntaba a menudo a C:\DOS, por lo que eliminar todos los archivos de %TEMP% podía causar muchos problemas. El creador del navegador web Arachne no consideró esta posibilidad, lo que le generó varias críticas.<ref>[http://www.mail-archive.com/arachne@arachne.cz/msg06852.html Hilo en la lista de correo de ARACHNE acerca del daño potencial]</ref>


==== Valores por defecto de las variables de entorno ====
==== Valores por defecto de las variables de entorno ====
Línea 211: Línea 211:
Muestra la línea de comando original que invocó el procesador de comandos.
Muestra la línea de comando original que invocó el procesador de comandos.


=== UNIX Y GNU ===
=== UNIX Y [[GNU/Linux|GNU]]===
;$PATH
;$PATH
Contiene una lista separada por dos puntos de directorios en los cuales el intérprete de comandos buscará los archivos ejecutables que no se invocan con una ruta. Por razones obvias de seguridad, normalmente esta variable de entorno no contiene el directorio actual.
Contiene una lista separada por dos puntos de directorios en los cuales el intérprete de comandos buscará los archivos ejecutables que no se invocan con una ruta. Por razones obvias de seguridad, normalmente esta variable de entorno no contiene el directorio actual.


;$HOME
;$HOME
Contiene la ubicación del directorio de usuario. De esta manera, los dos comandos siguientes tienen el mismo efecto:
Contiene la ubicación del [[Carpeta de usuario|directorio de usuario]]. De esta manera, los dos comandos siguientes tienen el mismo efecto:
cd ~
cd ~
cd $HOME
cd $HOME
Línea 224: Línea 224:


;$LANG, $LC_ALL
;$LANG, $LC_ALL
LANG contiene el idioma por defecto del sistema; LC_ALL permite ignorar su contenido. Por ejemplo, si contiene <code>pt_BR</code>, entonces el idioma será portugués de Brasil y el país será Brasil.
LANG contiene el [[idioma]] por defecto del sistema; LC_ALL permite ignorar su contenido. Por ejemplo, si contiene <code>pt_BR</code>, entonces el idioma será [[Portugués brasileño|portugués de Brasil]] y el país será [[Brasil]].


;$RANDOM
;$RANDOM
Línea 236: Línea 236:


;$SHELL
;$SHELL
Contiene el nombre de la shell interactiva que se está ejecutando, por ejemplo [[bash]].
Contiene el nombre de la [[Shell (informática)|shell]] interactiva que se está ejecutando, por ejemplo [[bash]].


;$TERM
;$TERM
Contiene el nombre de la terminal que se está ejecutando, por ejemplo [[xterm]].
Contiene el nombre de la [[Terminal (informática)|terminal]] que se está ejecutando, por ejemplo [[xterm]].


;$PAGER
;$PAGER
Línea 246: Línea 246:


;$EDITOR
;$EDITOR
Contiene la ruta al editor de texto, normalmente un editor liviano por ejemplo:
Contiene la ruta al [[editor de texto]], normalmente un editor liviano por ejemplo:
/usr/bin/nano
/usr/bin/nano


Línea 263: Línea 263:


;$HOSTNAME
;$HOSTNAME
Contiene el nombre de host del sistema.
Contiene el nombre de [[host]] del sistema.


;$PS1
;$PS1
El prompt (la entrada de la línea de comandos) por defecto .
El [[prompt]] (la entrada de la línea de comandos) por defecto .


;$USER
;$USER
Línea 272: Línea 272:


;$MANPATH
;$MANPATH
Cadena de texto separada por comas con las ubicaciones de las páginas del manual.
Cadena de texto [[Valores separados por comas|separada por comas]] con las ubicaciones de las [[Man (Unix)|páginas del manual]].


== Referencias ==
== Referencias ==

Revisión del 06:07 4 jun 2020

Una variable de entorno es una variable dinámica que puede afectar al comportamiento de los procesos en ejecución en un ordenador.

Son parte del entorno en el que se ejecuta un proceso. Por ejemplo, un proceso en ejecución puede consultar el valor de la variable de entorno TEMP para descubrir una ubicación adecuada para almacenar archivos temporales, o la variable HOME o USERPROFILE para encontrar la estructura de directorios propiedad del usuario que ejecuta el proceso.

Fueron introducidas en su forma moderna en 1979 con la versión 7 de Unix, por lo que están incluidas en todos los sabores y variantes del sistema operativo Unix a partir de ese momento, incluyendo Linux y macOS. Desde PC DOS 2.0 en 1982, todos los sistemas operativos de Microsoft, incluyendo Microsoft Windows y OS/2, también las han incluido como una característica, aunque con sintaxis, uso y nombres de variables estándar algo diferentes.

Obtener y dar valores a las variables de entorno

Es posible acceder al valor de una variable, ya sea tanto para consultarlo como para modificarlo, tanto dentro de scripts como desde la línea de comandos. La forma en que se accede al contenido de una variable varía para cada sistema operativo. En el caso de sistemas Unix, depende del intérprete de comandos (o shell) que se use, pues este es el encargado del manejo de las variables de entorno.

MS-DOS y Windows

Por ejemplo, para mostrar el contenido de la variable de entorno PATH (que mantiene la ruta de búsqueda de programas en el sistema) debe escribirse en la línea de comandos:

echo %PATH%

Observaciones: El comando SET, sin argumentos, muestra todas las variables de entorno junto con sus respectivos valores.

Para asignar un valor a una variable se usa:[1]

SET VARIABLE=valor

Cabe mencionar que esta asignación será visible desde todos los programas iniciados a partir de ese momento desde la misma ventana de la línea de comandos, pero no desde otras, ni se mantendrá de forma permanente.

Para lograr un cambio permanente (lo que en informática se conoce como persistencia), se puede usar el comando SETX (opcional, disponible dentro de las Herramientas de Soporte).[2]​ O bien, desde el escritorio de Windows XP:

  • Hacer clic con el botón secundario del ratón sobre el icono de Mi PC.
  • En el menú contextual, elegir la opción Propiedades.
  • A continuación en la ventana emergente, hacer clic en la pestaña Opciones avanzadas.
  • Luego debajo, buscar y dar clic al botón Variables de entorno.
  • Para modificar una variable existente, hacer clic en su nombre y luego en el botón Modificar. Para crear una nueva variable, usar el botón Nueva.

Los valores iniciales de las variables de entorno se almacenan en el registro de Windows, por lo que una tercera forma de lograr un cambio permanente es modificando dichos valores iniciales. Las variables del usuario se almacenan en HKEY_CURRENT_USER\Environment y las variables del sistema en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.

El manejo de variables de entorno en Windows ha sido mejorado (a partir de XP y versiones posteriores). Por ejemplo, para mostrar el PATH del sistema, pero usando barras / en lugar de \:

>echo %PATH:\=/%
C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Archivos de programa/
QuickTime/QTSystem/;C:/Archivos de programa/Archivos comunes/Adobe/AGL

Para guardar en la variable YEAR el año actual (los últimos cuatro caracteres de la variable %DATE%):

>set YEAR=%DATE:~-4%
>echo %YEAR%
2010

UNIX / GNU/Linux

En varias interfaces texto de Unix y Linux, como por ejemplo en bash, se muestra el valor de una variable mediante:

echo $PATH

Los comandos env, set, y printenv muestran todas las variables de entorno junto con sus respectivos valores. env y set se usan también para asignar valores a variables de entorno y normalmente son funciones incorporadas del intérprete de comandos. printenv permite también mostrar el valor de una variable de entorno particular si se le pasa su nombre como único parámetro.

La forma de asignar un valor a una variable es:

variable=valor

Pueden usarse también los siguientes comandos, aunque dependen del intérprete.

export VARIABLE=valor # en Bourne e intérpretes de comandos relacionados.
setenv VARIABLE valor # en csh e intérpretes de comandos relacionados.

El manejo de variables de entorno es altamente versátil en entornos UNIX/Linux.

Variables de entorno comunes

Windows

%COMSPEC%

Esta variable contiene la ruta completa al procesador de comandos, cmd.exe

%PATH%

Esta variable contiene una lista separada por punto y comas de directorios en los cuales el intérprete de comandos buscará los archivos ejecutables que no se invocan con una ruta explícita. Nótese que es posible asignarle valores a PATH con el comando homónimo, sin necesidad de utilizar SET. Por ejemplo, para poder invocar el navegador firefox desde cualquier directorio:

PATH=%PATH%;c:\Archivos de programa\Mozilla firefox

Si abrimos un nuevo intérprete de comandos y escribimos:

firefox http://es.wikipedia.org

se abrirá una ventana del navegador, sin necesidad de escribir la ruta completa al programa.

%PATHEXT%

Esta variable contiene una lista separada por punto y coma con las extensiones conocidas de los archivos ejecutables. Si el nombre de un ejecutable termina con una extensión incluida en esta lista, es posible omitir dicha extensión al invocar el programa. Un valor típico es .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH. Por ejemplo, debido a que .EXE está en la lista, podemos escribir firefox (en lugar de firefox.exe) para invocarlo.

%TEMP% y %TMP%

Estas variables contienen la ruta al directorio donde almacenar archivos temporales. Nótese que %TEMP% en MS-DOS 5 apuntaba a menudo a C:\DOS, por lo que eliminar todos los archivos de %TEMP% podía causar muchos problemas. El creador del navegador web Arachne no consideró esta posibilidad, lo que le generó varias críticas.[3]

Valores por defecto de las variables de entorno

Variable Windows XP Windows Vista/7
%ALLUSERSPROFILE% (%PROGRAMDATA%) C:\Documents and Settings\All Users C:\ProgramData
%APPDATA% C:\Documents and Settings\{username}\Datos de Programa C:\Users\{username}\AppData\Roaming
%COMPUTERNAME% {nombredeordenador} {nombredeordenador}
%COMMONPROGRAMFILES% C:\Archivos de programa\Archivos Comunes C:\Archivos de programa\Archivos Comunes
%COMMONPROGRAMFILES(x86)% C:\Archivos de programa (x86)\Archivos Comunes C:\Archivos de programa (x86)\Archivos Comunes
%COMSPEC% C:\Windows\System32\cmd.exe C:\Windows\System32\cmd.exe
%HOMEDRIVE% C:\ C:\
%HOMEPATH% C:\Documents and Settings\{username} \Usuarios\{username}
%LOCALAPPDATA% No disponible si es una declaración explícita. C:\Usuarios\{username}\Application Data\Local
%LOGONSERVER% \\{domain_logon_server} \\{domain_logon_server}
%PATH% C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem
%PATHEXT% .COM, .EXE, .BAT, .CMD, .VBS, .VBE, .JS, .WSF, .WSH .com, .exe, .bat, .cmd, .vbs, .vbe, .js, .jse, .wsf, .wsh, .msc
%PROGRAMFILES% C:\Archivos de programa\ C:\Archivos de programa\
%PROGRAMFILES(X86)% C:\Archivos de programa (x86) (solo en versiones 64-bit) C:\Archivos de programa (x86) (solo en versiones 64-bit)
%PROMPT% Código del formato de Cmd.exe. El código es normalmente $P$G Código del formato de Cmd.exe. El código es normalmente $P$G
%SystemDrive% C:\ C:\
%SystemRoot% El directorio de Windows, normalmente C:\Windows; anteriormente C:\WINNT C:\Windows
%TEMP% y %TMP% C:\Documents and Settings\{username}\Local Settings\Temp C:\Users\{username}\AppData\Local\Temp
%USERDOMAIN% {userdomain} {userdomain}
%USERNAME% {username} {username}
%USERPROFILE% %SystemDrive%\Documents and Settings\{username} C:\Users\{username}
%WINDIR% C:\Windows C:\Windows
%PUBLIC% C:\Users\Public
%PSModulePath% %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\

Pseudo-variables

No almacenan un valor fijo, sino que se evalúan al momento de pedir su valor.

%CD%

Muestra la cadena del directorio actual.

%DATE%

Muestra la fecha actual usando el mismo formato que el comando DATE.

%TIME%

Muestra la hora actual usando el mismo formato que el comando TIME.

%RANDOM%

Muestra un número decimal aleatorio entre 0 y 32767.

%ERRORLEVEL%

Muestra el valor de NIVEL DE ERROR actual (normalmente, el código de retorno del último comando externo ejecutado).

%CMDEXTVERSION%

Muestra el número de versión de las extensiones del procesador de comandos.

%CMDCMDLINE%

Muestra la línea de comando original que invocó el procesador de comandos.

UNIX Y GNU

$PATH

Contiene una lista separada por dos puntos de directorios en los cuales el intérprete de comandos buscará los archivos ejecutables que no se invocan con una ruta. Por razones obvias de seguridad, normalmente esta variable de entorno no contiene el directorio actual.

$HOME

Contiene la ubicación del directorio de usuario. De esta manera, los dos comandos siguientes tienen el mismo efecto:

cd ~
cd $HOME
$DISPLAY

Contiene el identificador del display que los programas de X11 deben usar por defecto.

$LANG, $LC_ALL

LANG contiene el idioma por defecto del sistema; LC_ALL permite ignorar su contenido. Por ejemplo, si contiene pt_BR, entonces el idioma será portugués de Brasil y el país será Brasil.

$RANDOM

Es una variable de entorno especial que, cuando se intenta obtener su contenido, devuelve un valor aleatorio.

$PWD

Contiene la ruta al directorio de trabajo actual.

$OLDPWD

Contiene la ruta al directorio de trabajo previo, esto es, el valor de $PWD antes de la ejecución del último cd.

$SHELL

Contiene el nombre de la shell interactiva que se está ejecutando, por ejemplo bash.

$TERM

Contiene el nombre de la terminal que se está ejecutando, por ejemplo xterm.

$PAGER

Contiene la ruta al programa usado para listar el contenido de archivos, por ejemplo:

/bin/less
$EDITOR

Contiene la ruta al editor de texto, normalmente un editor liviano por ejemplo:

/usr/bin/nano
$VISUAL

Contiene la ruta al editor de texto, normalmente un editor poderoso, por ejemplo vi, vim, emacs, etc.

$MAIL

Contiene la ubicación del email entrante. La configuración tradicional es:

/var/spool/mail/$LOGNAME. 
$HISTFILE

El nombre del archivo donde se guarda el historial de comandos.

$HISTFILESIZE

El número máximo de líneas contenidas en el historial de comandos.

$HOSTNAME

Contiene el nombre de host del sistema.

$PS1

El prompt (la entrada de la línea de comandos) por defecto .

$USER

Nombre de usuario actual registrado en el sistema.

$MANPATH

Cadena de texto separada por comas con las ubicaciones de las páginas del manual.

Referencias

Enlaces externos