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.
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 .
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.
Las variables de entorno de Windows se dividen en dos categorías:
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 :
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 |
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. |
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:\TEMPTambié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].
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”).