Variable ambiental

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 3 de diciembre de 2019; las comprobaciones requieren 19 ediciones .

La variable de entorno ( eng.  environment variable ) es una variable de texto del sistema operativo que almacena cualquier información, por ejemplo, datos sobre la configuración del sistema.

Variables de entorno UNIX

Las variables de entorno las establece el usuario o los scripts de shell. El conjunto inicial de variables lo establecen los scripts de inicio del sistema operativo y los scripts que se inician cuando un usuario inicia sesión en el sistema, en particular, /etc/profiley ~/.bash_profile.

El entorno es de gran importancia en los sistemas UNIX, ya que almacena muchas configuraciones tanto para el sistema como un todo como para programas individuales. Una característica importante es que, cuando se crea, el proceso secundario recibe una copia local del entorno del proceso principal y, por lo tanto, no puede cambiar directamente la configuración global.

El entorno es un conjunto de pares de "nombre de variable" y "valor de variable", cuya gestión suele asignarse al intérprete de comandos. Dado que hay una gran cantidad de intérpretes, la sintaxis difiere según el intérprete utilizado por el usuario. Tanto "nombre" como "valor" distinguen entre mayúsculas y minúsculas, "Nombre" generalmente está en mayúsculas, no se permiten espacios.

Los scripts suelen utilizar declaraciones de tipo ИМЯ_ПЕРЕМЕННОЙ="значение переменной", pero la sintaxis exacta depende del intérprete que se utilice.

Para obtener el valor de una variable, precede su nombre con un signo de dólar. A veces también es necesario encerrar el nombre entre paréntesis (por ejemplo, en scripts de creación ).

Desde la línea de comandos, las variables se gestionan mediante export y env .

Variables de entorno de Windows

Las variables de entorno se establecen en el registro de Windows y por software. Se pueden utilizar en la línea de comandos y en la barra de direcciones del Explorador de archivos.

Clasificación

Las variables de entorno de Windows se dividen en dos categorías:

Sintaxis

Acceder a alguna variable de entorno es posible de esta forma: %ИМЯ_ПЕРЕМЕННОЙ%. También es posible extraer una parte de una variable de una variable (si las extensiones de shell no están deshabilitadas en la computadora, están habilitadas por defecto), por ejemplo, imprimir diferentes partes de una variable VARusando la línea de comando de Windows :

Algunas variables de entorno

La lista de variables de entorno de Windows instaladas se puede encontrar escribiendo en el símbolo del sistema: seto haciendo clic en el botón Variables de entorno en la pestaña Avanzado del cuadro de diálogo Propiedades del sistema (Mi PC→Propiedades).

Nombre Objetivo Ejemplo de valor
%ALLUSERSPROFILE% Especifica la ruta a la carpeta para documentos compartidos y configuraciones comunes a todos los usuarios . C:\ProgramData\
%APPDATA% Especifica la ruta a la carpeta donde se almacenan las configuraciones de algunos programas del usuario actual. C:\Documents And Settings\Администратор\Application Data
%CLIENTNAME% La variable solo se define en el entorno de Conexión a escritorio remoto. Almacena el nombre de la computadora (%COMPUTERNAME%) del cliente de acceso remoto. MyPC
%COMMONPROGRAMFILES% Especifica la ruta a la carpeta donde se almacenan los archivos compartidos por los programas instalados. C:\Program Files\Common Files
%COMPUTERNAME% Almacena el nombre de una computadora en la red local. Начальник
%COMSPEC% Almacena la ruta al shell actual de Windows . C:\Windows\System32\cmd.exe
%HOMEDRIVE%, %SYSTEMDRIVE% Almacena el nombre de la unidad del sistema. C:
%HOMEPATH%, %USERPROFILE% Almacena la ruta a la carpeta de inicio del usuario C:\Documents And Settings\Администратор
%WINDIR% Almacena la ruta a la carpeta donde está instalado Windows C:\Windows
%SYSTEMROOT% Almacena la ruta a la carpeta del sistema (donde se almacena el kernel, etc.) C:\Windows
%PROGRAMFILES% Almacena la ruta a la carpeta con las aplicaciones instaladas C:\Program Files
%SESSIONNAME% Almacena el nombre de la sesión del usuario. En una sesión local, el valor es Consola; en una conexión de escritorio remoto mediante TCP/IP, es RDP-Tcp#<número de sesión>. Console, RDP-Tcp#1

Lista de variables

En los sistemas operativos modernos de Microsoft en la plataforma NT , las siguientes variables se utilizan para obtener información sobre el sistema [1] ( el texto en negrita se refiere a las versiones de los sistemas operativos Windows que comienzan con Vista (Vista/7/8/8.1/10) ) :

Nombre Tipo de Descripción
PERFIL DE TODOS LOS USUARIOS local Devuelve la ubicación del perfil "Todos los usuarios". En Windows 7, devuelve la ruta a la carpeta C:\ProgramData\ .
DATOS DE APLICACIÓN sistémico Devuelve la ubicación predeterminada para los datos de la aplicación. En Windows XP, es C:\Documents and Settings\%UserName%\Application Data. En Windows 7 - C:\Users\%UserName%\AppData\Roaming .
CD local Especifica la ruta al directorio actual. Idéntico al comando CD sin argumentos.
NOMBRE DEL CLIENTE dinámica local La variable solo se define en el entorno de Conexión a escritorio remoto. Almacena el nombre de la computadora (%COMPUTERNAME%) del cliente de acceso remoto.
CMDCMDLINE local El comando exacto utilizado para ejecutar el cmd.exe actual.
CMDEXTVERSION sistémico La versión de las Extensiones de procesador de comandos actuales.
ARCHIVOS DE PROGRAMA COMUNES sistémico La ubicación del directorio "Common Files" (generalmente %ProgramFiles%\Common Files).
ARCHIVOS DE PROGRAMA COMUNES (x86) sistémico La ubicación del directorio "Archivos comunes" en Archivos de programa (x86) para un sistema operativo de 64 bits (generalmente %ProgramFiles(x86)%\Common Files) .
NOMBRE DEL ORDENADOR sistémico Nombre del ordenador
COMESPEC sistémico Ruta al archivo ejecutable de shell.
FECHA sistémico Devuelve la fecha actual. Utiliza el mismo formato que el comando date /t. Creado por el comando Cmd.exe.
NIVEL DE ERROR sistémico Devuelve el código de error del último comando utilizado. Un valor distinto de cero generalmente indica un error.
CONDUCIR A CASA sistémico Devuelve el nombre de la unidad de la estación de trabajo local asociada con el directorio principal del usuario. Establecer en función de la ubicación del directorio principal. El directorio principal del usuario se especifica en el complemento Usuarios y grupos locales.
RUTA DE CASA sistémico Devuelve la ruta completa al directorio de inicio del usuario. Establecer en función de la ubicación del directorio principal. El directorio principal del usuario se especifica en el complemento Usuarios y grupos locales.
CASA COMPARTIDA sistémico Devuelve la ruta de red al directorio de inicio compartido del usuario . Establecer en función de la ubicación del directorio principal. El directorio principal del usuario se especifica en el complemento Usuarios y grupos locales.
LOCALAPPDATA sistémico Devuelve la ubicación local predeterminada para los datos de la aplicación (C:\Users\%UserName%\AppData\Local) .
SERVIDOR DE INICIO DE SESIÓN local El nombre del controlador de dominio que se usó para autorizar al usuario actual.
NUMBER_OF_PROCESADORES sistémico La cantidad de procesadores en el sistema (en realidad, la cantidad de núcleos).
sistema operativo sistémico El nombre del sistema operativo. Windows XP y Windows 2000 aparecen como Windows_NT.
SENDERO sistémico Especifica la ruta de búsqueda de archivos ejecutables.
RUTA sistémico Devuelve una lista de extensiones de archivo que el sistema operativo considera ejecutables.
PROCESADOR_ARQUITECTURA sistémico arquitectura del procesador. Posibles opciones: x86 , IA64 , AMD64 .
PROCESADOR_IDENTIFICADOR sistémico Descripción del procesador (la ortografía errónea de PROCESSOR_IDENTFIER a menudo se encuentra en Internet; falta una letra).
NIVEL_PROCESADOR sistémico Número de modelo del procesador.
PROCESADOR_REVISIÓN sistémico Revisión del procesador.
DATOS DEL PROGRAMA sistémico Devuelve la ruta al directorio C:\ProgramData\ (similar a ALLUSERSPROFILE) .
ARCHIVOS DE PROGRAMA sistémico Ruta al directorio de archivos de programa .
ARCHIVOS DE PROGRAMA (x86) sistémico Ruta al directorio Archivos de programa (x86) en sistemas de 64 bits para aplicaciones de arquitectura x86.
INMEDIATO local Devuelve las opciones de la línea de comandos para el intérprete actual. Creado por el comando Cmd.exe.
PÚBLICO sistémico En Windows 7, devuelve la ruta al directorio C:\Users\Public .
ALEATORIO sistémico Número decimal aleatorio de 0 a 32767. Generado por Cmd.exe.
ARRANQUE SEGURO_OPCIÓN sistémico Solo existe en modo seguro . Toma el valor del tipo de modo seguro en el que se está ejecutando el sistema. En Modo seguro y Modo seguro con soporte de línea de comandos , se establece en MÍNIMO. En Modo seguro con soporte de controlador de red , está configurado en Red.
NOMBRE DE SESIÓN local Almacena el nombre de la sesión de usuario activa. Configure en "Consola" para inicio de sesión local, RDP-Tcp#<número de sesión> para acceso remoto
TRANSMISIÓN DEL SISTEMA sistémico La unidad donde se encuentra el directorio raíz de Windows.
RAÍZ DEL SISTEMA sistémico La ruta al directorio raíz de Windows.
TEMP y TMP sistema y locales Obtiene los directorios temporales predeterminados utilizados por las aplicaciones que están disponibles para los usuarios registrados. Algunas aplicaciones requieren la variable TEMP, otras requieren la variable TMP. Potencialmente, TEMP y TMP pueden apuntar a diferentes directorios, pero normalmente son los mismos.
TIEMPO sistémico Devuelve la hora actual. Utiliza el mismo formato que el comando time /t. Creado por el comando Cmd.exe. Para obtener más información sobre el comando de tiempo, consulte Hora.
DOMINIO DE USUARIO local El nombre del dominio al que pertenece el usuario actual.
NOMBRE DE USUARIO local El nombre del usuario actual.
PERFIL DEL USUARIO local La ruta al perfil del usuario actual.
VIENTO sistémico El directorio donde está instalado Windows.

Trabajando con variables

Para acceder al valor de una variable, debe colocar un signo de % antes y después de su nombre, por ejemplo:

eco %PROCESSOR_ARCHITECTURE%

Para establecer el valor de una variable:

ESTABLECER TEMP=C:\TEMP

También puede trabajar con variables de entorno haciendo clic en el botón "Variables de entorno" en la pestaña "Avanzado" en el cuadro de diálogo "Propiedades del sistema" (menú contextual del icono "Mi PC" → elemento "Propiedades").

También debe recordar que, a diferencia de los sistemas UNIX, en DOS y en la línea de comandos estándar de Windows, los procesos que se inician no heredan las variables de entorno, sino que las comparten. Esto permite, por ejemplo, devolver los resultados de los programas a través de ellos, pero, por otro lado, crea la posibilidad de daño o desbordamiento. El desbordamiento es especialmente relevante para la variable PATH, ya que a menudo se complementa cuando se ejecutan varios scripts. Cuando se produce un desbordamiento de este tipo, basta con reiniciar el intérprete de línea de comandos. Los intérpretes portados desde sistemas UNIX (por ejemplo, Z-shell) no se ven afectados por este problema.

Puede obtener el valor de una variable en el código utilizando el método ExpandEnvironmentStrings del objeto COM WScript.Shell:

WScriptShell = ObjCreate("WScript.Shell") Nombre de usuario = WScriptShell.ExpandEnvironmentStrings("%NOMBRE DE USUARIO%")

Cabe señalar que el conjunto de valores de las variables de entorno lo obtiene el proceso al momento de su arranque, todos los procesos esclavos que inicia reciben los valores de las variables de este conjunto, si el segundo proceso (independiente del primero ) cambia el valor de la variable de entorno o crea una nueva variable, estos cambios no estarán disponibles para el primer proceso.

Los valores de las variables de entorno LOGONSERVER, CLIENTNAME, SESSIONNAME, APPDATA, HOMEDRIVE, HOMEPATH se establecen cuando se abre una sesión en función de los valores de la clave de registro [HKEY_CURRENT_USER\Volatile Environment].

Los valores de las variables de entorno global como PATH, TEMP, etc. se almacenan en la rama de registro [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment].

Perdido en la traducción

Es muy común malinterpretar la palabra "entorno" en la frase "Variables de entorno". El malentendido surge de la lectura de la palabra "medio ambiente" con el acento incorrecto en la primera sílaba, lo que lleva al reconocimiento de esta palabra como una forma del nominativo plural de la palabra "medio ambiente" (entorno). Correcto es el entendimiento de la palabra "medio ambiente" como una forma del genitivo singular de la palabra "medio ambiente" y la pronunciación con énfasis en la segunda sílaba.

Así, es incorrecto decir, por ejemplo, “con variables de entorno” (“con variables de entorno”), pero es correcto decir “con variables de entorno” (“con variables de entorno”).

Notas

  1. Variables de entorno (Windows) . msdn.microsoft.com. Consultado el 29 de junio de 2018. Archivado desde el original el 29 de junio de 2018.