¿Qué son las RUTA y otras variables de entorno, y cómo puedo configurarlas o usarlas?


341

Preguntas sobre

  • establecer variables de entorno
  • el PATH

son muy comunes aquí, y en la mayoría de los casos las respuestas son muy similares entre sí. En el futuro sería bueno tener un buen Q / A para esto.

Entonces la pregunta es: ¿Cuáles son las variables de entorno, como el ejecutable PATH, y cómo puedo cambiarlas y usarlas en los principales sistemas operativos?

Una buena respuesta incluiría una explicación simple de qué variables de entorno y especialmente PATHsignifican para el sistema operativo, así como pautas simples sobre cómo configurarlas y leerlas en consecuencia.


2
Cansado de tener que hacerlo manualmente cada vez que lo necesitaba, escribí algunas entradas de registro para agregar entradas de menú contextual para AddToPath y RemoveFromPath a las carpetas, utilizando una aplicación gratuita llamada pathed.exe. El siguiente es el enlace a la guía completa: addictivetips.com/windows-tips/… Ahora puedo agregar fácilmente carpetas a la variable PATH o eliminarlas, sin tener que editar ningún archivo o preocuparme por estropear el formato de la variable . Espero eso ayude. =)
Haroon Q. Raja

1
En Windows hay un acceso directo para abrir las propiedades del sistema, es decir. Panel de control -> Sistema Es la tecla WIN en el teclado + Pausa / Pausa (WIN + Pausa). Esto es extremadamente útil y acelera el proceso de configuración de nuevas variables ambientales en Win8 porque allí tienes que hacer clic a través de varias ventanas en la interfaz de usuario moderna (Sí. Si es moderna, cultivaré un cactus en mi palma), lo cual es molesto. Por supuesto, puede crear un script de PowerShell o usar el comando setx y no se preocupe más por eso: D
termil0r

En Windows 8, la navegación más rápida para cambiar las variables de entorno del sistema y del usuario es mediante la búsqueda. <kbd> Win </kbd> + <kbd> W </kbd> muestra la búsqueda de todas las configuraciones. Busque envy se enumeran las opciones necesarias.
VIERNES

Creo que es más rápido y claro al abrir CMDy escribir set, o al PowerShellescribir Get-Childitem env:.
paradroid

Si está editando mucho la variable de ruta (como al configurar un nuevo sistema), puede ser útil tener un acceso directo al cuadro de diálogo Propiedades del sistema en el escritorio. Para hacerlo, haga clic derecho en el escritorio, seleccione Nuevo acceso directo e ingrese systempropertiesadvanced.exe. Luego puede hacer clic en el enlace para acceder al cuadro de diálogo Propiedades del sistema, luego hacer clic en Variables de entorno para acceder al cuadro de diálogo con la configuración de ruta.
Brian Burns

Respuestas:


334

¿Qué son las variables de entorno?

Las variables de entorno contienen valores relacionados con el entorno actual, como el sistema operativo o las sesiones de usuario.

Camino

Uno de los más conocidos se llama PATHen Windows, Linux y Mac OS X. Especifica los directorios en los que se encuentran los programas ejecutables * en la máquina que se pueden iniciar sin conocer y escribir la ruta completa del archivo en la línea de comandos . (O en Windows, el cuadro de diálogo Ejecutar en el menú Inicio o Win+ R).

En Linux y Mac OS X, que por lo general tiene todo biny sbindirectorios relevantes para el usuario actual. En Windows, contiene al menos los directorios C:\Windowsy C:\Windows\system32, es por eso que puede ejecutar calc.exe o notepad.exedesde la línea de comando o el cuadro de diálogo Ejecutar , pero no firefox.exe. (Firefox se encuentra en C:\Program Files\Mozilla Firefox. Para obtener información sobre cómo incluir Firefox, vaya aquí ).

Por ejemplo, al escribir calc( .exe se puede omitir) en la línea de comandos en Windows, se iniciará la Calculadora de Windows.

* Puede agregar soporte para extensiones de archivo que no sean .exeeditando %PATHEXT%.

Otro

Otras variables pueden indicarle a los programas qué tipo de terminal se usa ( TERMen Linux / Mac OS X) o, en Windows, dónde se encuentra la carpeta de Windows (por ejemplo, %WINDIR%es C:\Windows).

Crear nuevas variables de entorno

En Windows, Linux y Unix, es posible crear nuevas variables de entorno, cuyos valores se ponen a disposición de todos los programas al iniciarlos.

Puede usar esto al escribir scripts o programas que se instalan o implementan en varias máquinas y necesitan hacer referencia a valores específicos de estas máquinas. Si bien se puede lograr un efecto similar usando configuraciones de configuración específicas del programa, es más fácil hacerlo usando una variable de entorno si varios programas necesitan acceder al mismo valor.

 

Ventanas

GUI

  1. Abierto Control Panel » System » Advanced » Environment Variables.

  2. Escriba control sysdm.cpl,,3en el cuadro de diálogo Ejecutar ( Win+ R) y haga clic Environment Variables.
    Para editar variables de usuario también puede escribir

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    en el cuadro de diálogo Ejecutar.

  3. Haga clic derecho en (Mi) Computadora y haga clic en Propiedades, o simplemente presione Win+ Break.

    • En XP, haga clic en Advanced » Environment Variables.
    • En Vista + haz clic en Advanced system settings » Environment Variables.
  4. Hay muchas otras formas de llegar al mismo lugar, como escribiendo "variables de entorno" en el cuadro de búsqueda del menú Inicio / pantalla y así sucesivamente.

Las variables de entorno en Windows se separan en valores específicos de usuario y máquina / sistema. Puede ver y editar sus valores allí. Sus valores actuales en el lanzamiento están disponibles para todos los programas.

También hay Rapid Environment Editor , que ayuda a configurar y cambiar las variables de entorno en Windows sin la necesidad de profundizar en la configuración del sistema. Otro editor de código abierto para Windows con el que el entorno de ruta se puede editar de manera muy conveniente es Path Editor .

Línea de comando

Formato

Las variables de entorno en Windows se denotan con signos de porcentaje (%) que rodean el nombre:

%name%

eco

Para mostrar el valor de una variable de entorno en cmd.exe, escriba echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

conjunto

Para crear / establecer una variable, use set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Para agregar / agregar una variable, use set varname=value;%varname%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Las variables de entorno establecidas de esta manera están disponibles para (el resto de) la duración del proceso del Símbolo del sistema en el que se establecen, y están disponibles para los procesos que se inician después de que se establecieron las variables.

setx

Para crear / establecer una variable de forma permanente , use setx varname "value":

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

A diferencia set, no hay signo igual y el valor debe estar entre comillas si contiene espacios. Tenga en cuenta que las variables pueden expandirse a una cadena con espacios (por ejemplo, se %PATH%convierte C:\Program Files), por lo que es mejor incluir comillas alrededor de los valores que contienen cualquier variable.

Debe agregar manualmente setxa las versiones de Windows anteriores a Vista.
Herramientas de soporte de Windows XP Service Pack 2

Lista de variables de entorno de Windows

Aquí hay una lista de variables de entorno predeterminadas , que están integradas en Windows. Algunos ejemplos son: %WINDIR%, %SystemRoot%, %USERPROFILE%, y %APPDATA%. Como la mayoría de los nombres en Windows, estos no distinguen entre mayúsculas y minúsculas.

 

Derivados de Unix (FreeBSD, GNU / Linux, OS X)

Las variables de entorno en Linux tienen el prefijo de un signo de dólar ($) como $ HOME o $ HOSTNAME. Muchas variables estándar y bien conocidas se explican en mayúsculas para indicar exactamente eso. Tenga en cuenta que los nombres de las variables distinguen entre mayúsculas y minúsculas, lo que significa que $ User y $ USER no tienen relación alguna desde el punto de vista del shell.

Los derivados de Unix definen variables de todo el sistema en scripts de shell ubicados principalmente en la /etccarpeta, pero se pueden dar valores específicos del usuario a esas variables en scripts ubicados en la carpeta de inicio (por ejemplo /etc/profile, $HOME/.bash_profile). El .profilearchivo en la carpeta de inicio es un lugar común para definir variables de usuario.

Establecer variables

Estos archivos son scripts de shell normales y pueden contener más que solo declaraciones de variables de entorno. Para establecer una variable de entorno, use export. Para mostrar las variables de entorno definidas actualmente en un terminal, ejecute env.

El exportcomando es una forma estándar de definir variables. La sintaxis es muy intuitiva. El resultado es idéntico para estas dos líneas, pero la primera alternativa es preferible en caso de que sea necesaria la portabilidad al shell Bourne pre POSIX.

var=value; export var
export var=value

El shell C y sus descendientes usan una sintaxis completamente diferente; ahí está el comando setenv.

Vea el proyecto de documentación de Linux, Path HOWTO para una discusión más completa sobre este tema.

Quizás contrario a la creencia común, OS X es más "Unix" que Linux. Además de los archivos ya mencionados, $ PATH se puede modificar en estos archivos:

  • /etc/pathscontiene todos los directorios predeterminados que se agregan a la ruta, como /biny /usr/sbin.
  • Cualquier archivo en /etc/paths.d- comúnmente utilizado por los instaladores para hacer que los archivos ejecutables que proporcionan estén disponibles desde el shell sin tocar archivos de configuración específicos del usuario o de todo el sistema. Estos archivos simplemente contienen una ruta por línea. por ejemplo, / Programas / Mozilla / Calendario / bin.

 

Enlaces externos:

Variables de entorno en XP
Windows XP Service Pack 2 Herramientas de soporte (Incluye setx)
Variables de entorno en Windows Vista y Windows 7
Agregar ejecutables al cuadro de diálogo Ejecutar
Consejos para Mac OSX - Establecer variables de entorno
TLDP: Guía de ruta


10
En Windows Vista en adelante, puede usar SETXpara hacer cambios permanentes. Tiene una sintaxis ligeramente diferente. SETXtiene que ser agregado desde el Windows Server 2003 Resource Kitpara versiones anteriores de NT.
Paradroid

1
@paradroid Nice, no lo sabía (no es un usuario de Windows). Este tema es wiki comunitario, puedes seguir adelante y editar esa información.
Daniel Beck

2
@JdeBP El título de la sección estaba destinado a hacer referencia a cómo establecer estos valores en la interfaz de usuario , que se llama shell en Windows, en contraste con la siguiente sección, interfaz de línea de comandos . Edité esto incluso antes de ver tu comentario hace 10 horas. Nadie mencionó nunca que esto se aplicaba solo a Explorer.
Daniel Beck

1
@JdeBP La respuesta a la que se vinculó realmente no se aplica en este caso, ya que habló sobre establecer los valores en el registro. La configuración a través del diálogo transmitirá lo que WM_SETTINGCHANGEimagino y, por lo tanto, notificará a las partes interesadas sobre los nuevos valores. Por eso pregunté cómo se aplicaba aquí. Hacer algo en negrita no cambia su significado y tampoco lo hace más fácil de entender, al igual que repetir la misma oración, solo que más fuerte. Además, edité esta publicación hace unas horas para mencionar específicamente que los valores que reciben los procesos se establecen cuando se inician.
Daniel Beck

3
@JdeBP También puede notar que la pregunta es de naturaleza bastante básica. Explicar cuidadosamente las complejidades de cómo se distribuyen los cambios en las variables de entorno (¿en serio WM_SETTINGCHANGE? ¿API de Windows? ¡Esta no es la audiencia de esta pregunta!) Podría no ser una buena idea, ya que podría confundir al lector en lugar de explicar de qué se tratan estas variables .
Daniel Beck

64

Esta publicación es desde un punto de vista más técnico que el de Daniel, pero no explica tanto los conceptos.


El artículo de Wikipedia también es una excelente referencia.

Linux y la mayoría de los BSD

En la mayoría de los shells de línea de comandos, las variables de entorno temporales se configuran mediante los comandos export(sh, bash, zsh) o setenv(csh, tcsh).

  • Ejemplos para anteponiendo $HOME/bina $PATHen bash o zsh:

    export PATH="$HOME/bin:$PATH"
    

    (En este caso particular, exportes innecesario ya PATHque ya forma parte del entorno).

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Las variables de entorno persistentes se pueden establecer durante varias etapas separadas:

  • Iniciar sesión:

    • Configuración de sesión de inicio de sesión: Linux pam_env, que generalmente se lee desde/etc/environment

    • Inicios de sesión de terminal: los archivos de "perfil" del shell.

      • bashutiliza /etc/profiley el primero de: ~/.bash_profile, ~/.bash_login, ~/.profile. bash(1)Sección de la página del manual Invocación .

        A menudo, el archivo de perfil del usuario también incluye una llamada explícita ~/.bashrc.

      • zsh: zsh(1)Sección de la página del manual Archivos de inicio / apagado .

      • csh y otros proyectiles: consulte las páginas de manual apropiadas.

    • Inicios de sesión gráficos: no estoy seguro; puede variar según el administrador de inicio de sesión. GDM parece leer ~/.profileen mi sistema.

  • Apertura de una ventana de terminal:

    • bashusos /etc/bash.bashrcy ~/.bashrc.

Windows NT series

  • En Símbolo del sistema ( cmd.exe), use set name=valuepara cambiar las variables de entorno para esa ventana.

    Para añadir c:\bina %PATH%, uso:

    set path=%path%;c:\bin
    

    Esto solo afecta ese cmd.exeproceso y cualquier proceso nuevo que se inicie desde él.

  • Para realizar cambios persistentes, use Panel de control → Sistema → Avanzado → Variables de entorno . ( documentos )

    Nota: Si bien la configuración del usuario normalmente anula las del sistema, la PATHvariable se maneja especialmente: tanto la configuración del sistema como la del usuario se fusionan en el valor final.

    Los cambios se almacenan en el Registro (ver más abajo) y se aplican instantáneamente a todos los procesos nuevos creados por Explorer (el shell gráfico), por ejemplo, a través del Menú Inicio.

  • Las variables de entorno de todo el sistema se guardan en el Registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmenty se cargan en el arranque del sistema.

    El entorno del usuario se mantiene HKCU\Environmenty carga durante el inicio de sesión del usuario.

  • Por defecto, el sistema también busca setcomandos en el AUTOEXEC.NTarchivo.

MS-DOS, Windows de 16 bits, Windows 9x series

  • En MS-DOS Prompt ( command.com), use set name=value, como en WinNT.

    Del mismo modo, la ejecución setinteractiva solo afecta a esa command.cominstancia, junto con cualquier proceso nuevo que se inicie desde ella.

  • Para realizar cambios persistentes, agregue o edite setlíneas apropiadas C:\AUTOEXEC.BATy luego reinicie.

    • Solución alternativa para evitar reiniciar, para Windows 9x: abra una ventana de símbolo del sistema de MS-DOS, establezca las variables apropiadas, cierre el proceso del explorador existente ( Inicio → Apagar → mientras mantiene presionadas las teclas Ctrl + Shift, haga clic en Cancelar ), ejecute explorer.exedesde la ventana del mensaje de MS-DOS .

VMS

(No pude resistir)

DCL no tiene el concepto de "ruta", pero se pueden poner varias definiciones de símbolos y comandos SYS$LOGIN:LOGIN.COM.


2
La sección de VMS está mal. DCL tiene DCL$PATHpara " comandos foráneos automáticos ".
JdeBP

9

Para las variables de entorno globales de bashshell PATH(no terminal), sigo la convención utilizada en mi instalación de Ubuntu VM; otros shells variarán:

Advertencia: toda la secuencia de inicio de shell, qué .bashrc, .profileetc. los archivos se obtienen en qué orden ?, ¿cuándo debo volver a iniciar sesión para obtener visibilidad de las variables, alias, etc. recién definidos ?, ¿cuál es la diferencia entre un inicio de sesión? , interactivo y no interactivo: ¿uso cron? ¿Y por qué cuando hago una . ~/.bashrcmi estúpida PATHvariable crece más y más? son las preguntas clave que me vienen a la mente cuando pienso en mi PATHvariable.

De hecho, acabo de reescribir completamente todo mi conjunto de archivos de inicio de bash tomando ideas de los archivos de esqueleto de Ubuntu y Cygwin, y aquí están algunos de mis sitios:

  1. Exporte las PATHvariables de entorno global y otras (es decir LD_LIBRARY_PATH) variables en el .profile;
  2. Use la lógica en la ~/.profilefuente $HOME/.bashrcsi existe;
  3. Ejecución de cercado ~/.bashrccon una prueba para ejecución interactiva, salga de lo contrario;
  4. Ponga todos los alias, shopt's, configuración de solicitud, control de historial, configuración de terminal, definición de función, etc. (configuración relacionada interactiva) en la parte de ~/.bashrcque está protegida para ejecutarse solo en modo interactivo;
  5. Deshacerse de los otros archivos de inicio de fiesta, porque su existencia determina si la ruta de control a través .profiley .bashrcfunciona como se esperaba. Es decir, a menos que existan requisitos específicos para hacer lo contrario, elimine ~/.bash_profile& ~/.bash_login;
  6. Cuando estoy en el indicador de bash, y necesito actualizar alguna configuración predeterminada, edito mi ~/.bashrcarchivo, luego simplemente lo . ~/.bashrcobtengo con un para obtener esos cambios en mi shell actual.
  7. Cuando hago un cambio en una variable de entorno como PATH, necesito modificar y buscar mi ~/.profile;
  8. Pongo mis llamadas a fink, puerto y preparo configuraciones específicas .profile.

Esos son mis 2 centavos sobre este tema.


7

P: ¿QUÉ son las variables de entorno?

R: Las variables de entorno son similares a las variables en cualquier lenguaje de programación. En el caso de los sistemas Windows o Unix, están almacenando varios valores para permitir que los programas y las tareas obtengan la información necesaria del sistema operativo o la información del 'Entorno'. Por ejemplo:

PERFIL DE USUARIO: directorio de usuarios dentro de los archivos del sistema operativo.

CORREO: donde se puede encontrar el correo de un usuario dentro de los archivos del sistema operativo.

P: ¿CUÁL es la variable PATH específicamente?

R: La variable PATH establece rutas de directorio para buscar cuando se ejecutan comandos, tanto para comandos RUN como para llamadas internas de programas. Esto evita que un programa necesite conocer su ubicación de instalación para llamar a otros procesos ejecutables.

Busca la variable PATH del sistema de entorno de Windows y prueba cada ubicación para el ejecutable dado. Por lo tanto, agregar una ubicación a la variable PATH permite llamar directamente a un ejecutable.

De acuerdo con este artículo de Wikipedia :

Cuando se ingresa un comando en un shell de comandos o un programa realiza una llamada al sistema para ejecutar un programa, el sistema primero busca el directorio de trabajo actual y luego busca la ruta, examinando cada directorio de izquierda a derecha


P: ¿CÓMO agregar una ubicación a la variable PATH?

R: Necesita editar la cadena variable de la variable PATH de Variables de entorno para incluir la ubicación de su ejecutable.

Aquí se describe una forma de hacer esto :

  1. Abra el menú Inicio y haga clic derecho en Computadora. Seleccione Propiedades
  2. Seleccione Configuración avanzada del sistema.
  3. En la pestaña Avanzado, seleccione Variables de entorno.
  4. Seleccione EDITAR o NUEVO. (para la RUTA lo más probable es que desee EDITAR).
  5. Agregue su ruta de ubicación. p.ej:C:\wamp\bin\php\php5.5.12;

Espero que esto aclare algo de la confusión.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.