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


Preguntas sobre

  • configuración de 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 una buena Q / A para esto.

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

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


315


origen


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. A continuación se encuentra el enlace a la guía completa: addictivetips.com/windows-tips/... Ahora puedo agregar fácilmente carpetas a la variable PATH o eliminarlas de ella, sin tener que editar ningún archivo ni preocuparme por estropear el formato de la variable. Espero eso ayude. =) - Haroon Q. Raja
En Windows hay un atajo para abrir propiedades de System ie. Panel de control -> Sistema Es la tecla WIN en el teclado + Pausa / Pausa (WIN + Pausa). Esto es extremadamente útil y acelera el proceso de establecer nuevas variables ambientales en Win8 porque hay que hacer clic a través de varias ventanas en la interfaz de usuario moderna (Sí, si es moderno, entonces creceré un cactus en la palma de mi mano) que es molesto. Por supuesto, puede crear secuencias de comandos 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 del entorno del sistema y del usuario es usando la búsqueda. <kbd> Win </ kbd> + <kbd> W </ kbd> abre la búsqueda de todas las configuraciones. Buscar envy las opciones necesarias están en la lista. - FRIdSUN
Creo que es más rápido y más claro al abrir CMD y escribiendo set, o PowerShell y escribiendo Get-Childitem env:. - paradroid
Si está editando mucho la variable de ruta (como al configurar un nuevo sistema), podría 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. A continuación, puede hacer clic en el enlace para acceder al cuadro de diálogo Propiedades del sistema y, a continuación, hacer clic en Variables del entorno para acceder al cuadro de diálogo con la configuración de ruta. - Brian Burns


Respuestas:


¿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 PATH en 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 al archivo en la línea de comando. (O en Windows, el correr diálogo en el menú de inicio o Win+R)

En Linux y Mac OS X, por lo general contiene todo bin y sbin directorios relevantes para el usuario actual. En Windows, contiene al menos el C:\Windows y C:\Windows\system32 directorios - es por eso que puedes correr  calc.exe o notepad.exe desde la línea de comando o correr diálogo, 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, escribiendo calc (el .exe  poder se omite) en la línea de comando en Windows se iniciará la Calculadora de Windows.

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

Otro

Otras variables pueden decirle a los programas qué tipo de terminal se usa (TERM en Linux / Mac OS X), o, en Windows, donde se encuentra la carpeta de Windows (por ejemplo, %WINDIR% es C:\Windows)

Creando nuevas variables de entorno

En Windows, Linux y Unix, es posible crear nuevas variables de entorno, cuyos valores están disponibles para todos los programas una vez iniciados.

Puede usar esto al escribir scripts o programas que están instalados o implementados en varias máquinas y necesitan referenciar valores que son 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 hacer esto usando una variable de entorno si varios programas necesitan acceder al mismo valor.

Windows

GUI

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

  2. Tipo control sysdm.cpl,,3 en el 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 con el botón derecho (Mi) Computadora y haga clic en Propiedades, o simplemente presione Win+Descanso.

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

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

También hay Editor de entorno rápido, que ayuda a establecer y cambiar variables de entorno en Windows sin la necesidad de profundizar en la configuración del sistema. Otro programa de código abierto para Windows con el que se puede editar el entorno de ruta es muy conveniente Path Editor.

Línea de comando

Formato

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

%name%

eco

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

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

conjunto

A crear / configurar una variable, uso set varname=value:

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

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

A añadir / agregar una variable, uso 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 configuradas de esta manera están disponibles para (el resto de) la duración del proceso de símbolo del sistema en el que están configurados, y están disponibles para los procesos que se inician después de establecer las variables.

Setx

A crear / configurar una variable permanentemente, utilizar 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

diferente a 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, %PATH% se convierte C:\Program Files), por lo que es mejor incluir comillas alrededor de los valores que contienen cualquier variable.

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

Lista de variables de entorno de Windows

aquí es una lista de variables de entorno predeterminadas, que están integrados en Windows. Algunos ejemplos son: %WINDIR%, %SystemRoot%, %USERPROFILE%y %APPDATA%. Al igual que 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 como prefijo un signo de dólar ($) como $ HOME o $ HOSTNAME. Muchas variables estándar y conocidas se explican con letras 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 están relacionados desde el punto de vista del shell.

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

Variables de configuración

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 actualmente definidas en un terminal, ejecuta env.

los export comando 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 a shell pre-POSIX Bourne.

var=value; export var
export var=value

El shell C y sus descendientes usan una sintaxis completamente diferente; allí, el comando es setenv.

Ver el proyecto de documentación de Linux, Camino HOWTO para una discusión más a fondo sobre este tema.

Tal vez contrariamente 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/paths contiene todos los directorios predeterminados que se agregan a la ruta, como /bin y /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 los archivos de configuración de todo el sistema o específicos del usuario. Estos archivos simplemente contienen una ruta por línea. por ejemplo, / Programs / Mozilla / Calendar / bin.

Enlaces externos:

Variables de entorno en XP
Herramientas de soporte de Windows XP Service Pack 2 (Incluye setx)
Variables de entorno en Windows Vista y Windows 7
Agregar ejecutables al cuadro de diálogo Ejecutar
Consejos de Mac OSX: configuración de variables de entorno
TLDP: Camino Howto


308



En Windows Vista en adelante, puede usar SETX para hacer cambios permanentes Tiene una sintaxis ligeramente diferente. SETX tiene que ser agregado desde el Windows Server 2003 Resource Kit para versiones anteriores de NT. - paradroid
@paradroid Bonito, no lo sabía (no era un usuario de Windows). Este tema es wiki de la comunidad, puede continuar y simplemente editar en esa información. - Daniel Beck♦
@JdeBP El título de la sección estaba destinado a referencia cómo establecer estos valores en la interfaz de usuario, Lo que es llamado cáscara en Windows, en contraste con la siguiente sección, interfaz de línea de comando. Edité esto antes de ver su comentario hace 10 horas. Nadie mencionó que esto se aplicaba solo a Explorer. - Daniel Beck♦
@JdeBP La respuesta a la que se vinculó no se aplica realmente en este caso, ya que habló sobre establecer los valores en el registro. La configuración a través del diálogo transmitirá WM_SETTINGCHANGE Imagino, y por lo tanto notificar a las partes interesadas sobre los nuevos valores. Es por eso que pregunté cómo se aplicó 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♦
@JdeBP También podrías notar que la pregunta es bastante básica por naturaleza. Explicar cuidadosamente las complejidades de cómo se distribuyen los cambios a 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♦


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


los Artículo de Wikipedia es también una excelente referencia.

Linux y la mayoría de BSD

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

  • Ejemplos de antependencia $HOME/bin a $PATH en bash o zsh:

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

    (En este caso particular, export es innecesario desde PATH ya es parte del medio ambiente.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Las variables de entorno persistentes se pueden configurar en varias etapas separadas:

  • Iniciar sesión:

    • Configuración de la sesión de inicio de sesión: Linux pam_env, que por lo general se lee de /etc/environment

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

      • bash usos /etc/profile y el primero de: ~/.bash_profile, ~/.bash_login, ~/.profile. Página de manual bash(1) sección Invocación.

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

      • zsh: Página de manual zsh(1) sección Archivos de inicio / apagado.

      • csh y otras conchas: ver 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 ~/.profile en mi sistema.

  • Apertura de una ventana de terminal:

    • bash usos /etc/bash.bashrc y ~/.bashrc.

Windows NT series

  • En el símbolo del sistema (cmd.exe), utilizar set name=value para cambiar las variables de entorno para esa ventana.

    Para anexar c:\bin a %PATH%, utilizar:

    set path=%path%;c:\bin
    

    Esto solo afecta eso cmd.exe proceso, y cualquier nuevo procesos lanzados desde allí.

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

    Nota: Mientras que la configuración del usuario normalmente anula las del sistema, PATH la variable 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 abajo), y se aplican instantáneamente a todos nuevo procesos creados por Explorer (el shell gráfico), por ejemplo, a través del Menú de Inicio.

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

    El entorno del usuario se mantiene HKCU\Environment y cargado durante el inicio de sesión del usuario.

  • Por defecto, el sistema también busca set comandos en AUTOEXEC.NT archivo.

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

  • En Indicación de MS-DOS (command.com), utilizar set name=valuecomo en WinNT

    Del mismo modo, corriendo set interactivamente solo afecta ese command.com ejemplo, junto con cualquier nuevo proceso lanzado desde allí.

  • Para realizar cambios persistentes, agregue o edite archivos apropiados set líneas en C:\AUTOEXEC.BAT, luego reinicia.

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

VMS

(No pude resistir)

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


61



La sección VMS es incorrecta. DCL tiene DCL$PATH para "comandos extranjeros automáticos". - JdeBP
@grawity, ¿Qué quieres decir con "vms no pudo resistir ..."? - Pacerier


Para el bash cáscara PATH variables de entorno globales (no terminales), sigo la convención utilizada en mi instalación de Ubuntu VM - otros shells variarán:

Advertencia: toda la secuencia de inicio de shell, que .bashrc, .profile, etc. ¿en qué orden ?, ¿cuándo tengo que volver a iniciar sesión para obtener visibilidad de las variables, alias, etc. recién definidos ?, ¿cuál es la diferencia entre un shell de inicio de sesión, interactivo y no interactivo? Sí uso cron? y por qué cuando hago un . ~/.bashrc es mi estúpido PATH variable creciendo cada vez más? son las preguntas clave que me vienen a la mente cuando estoy pensando en mi PATH variable.

De hecho, simplemente reescribí por completo mi conjunto completo de archivos de inicio de bash tomando ideas de los archivos del esqueleto de Ubuntu y Cygwin, y aquí están algunos de mis sitios:

  1. Exportar el PATH y otras variables de entorno global (es decir LD_LIBRARY_PATH) variables en el .profile;
  2. Usa lógica en ~/.profile a la fuente $HOME/.bashrc si existiera;
  3. La valla de la ejecución del ~/.bashrc con una prueba para ejecución interactiva, salga de otra manera;
  4. Pon todos los alias, shopt's, configuración rápida, control de historial, configuración de terminal, definición de función, etc. (configuración relacionada interactiva) en la parte de ~/.bashrc que está protegido para ejecutarse solo en modo interactivo;
  5. Deshazte de los otros archivos de inicio bash, porque su existencia determina si la ruta de control a través de .profile y .bashrc funciona 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 prompt bash, y necesito actualizar alguna configuración predeterminada, edito mi ~/.bashrc archivo, luego simplemente fuentealo con un . ~/.bashrc para obtener esos cambios en mi caparazón actual.
  7. Cuando hago un cambio en una variable de entorno como PATH, Necesito modificar y fuente mi ~/.profile;
  8. Puse mis llamadas a fink, puerto, y preparar configuraciones específicas en .profile.

Esa es mi 2 centavos sobre este tema.


8





P:  ¿CUÁLES son las variables de entorno?

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

USERPROFILE: directorio de usuarios dentro del archivo de sistema operativo c.

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

P: ¿QUÉ es específicamente la variable PATH?

UN: La variable PATH establece rutas de acceso de directorio para observar cuando se ejecutan los comandos, tanto para los comandos RUN como para las llamadas internas desde los programas. Esto evita que un programa necesite saber su ubicación de instalación para llamar a otros procesos ejecutables.

Se ve a la variable PATH del sistema de entorno de Windows y prueba cada ubicación para el ejecutable dado. Por lo tanto, al agregar una ubicación a la variable PATH, se puede invocar un ejecutable directamente.

"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 en el directorio de trabajo actual y luego busca en la ruta, examinando cada directorio de izquierda a derecha" - http://en.wikipedia.org/wiki/PATH_(variable)


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

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

Una forma de hacerlo desde (https://kb.wisc.edu/cae/page.php?id=24500) 1. Abra el Menú de Inicio y haga clic derecho en la Computadora. Seleccionar propiedades 2. Seleccione la configuración avanzada del sistema. 3. En la pestaña Avanzado, seleccione Variables de entorno. 4. Seleccione EDITAR o NUEVO. (para PATH, lo más probable es que quieras EDITAR). 5. Agregue su ruta de ubicación. por ejemplo: C: \ wamp \ bin \ php \ php5.5.12;

Espero que esto aclare algo de la confusión. Ediciones y comentarios son bienvenidos.


6