2011-05-16 18:25:57 +0000 2011-05-16 18:25:57 +0000
347

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

Las preguntas sobre

  • configuración de las 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.

Así que la pregunta es: ¿Qué 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 simple explicación de lo que las variables de entorno y especialmente PATH significan para el sistema operativo, así como unas sencillas directrices sobre cómo configurarlas y leerlas en consecuencia.

Respuestas [5]

337
2011-05-16 18:44:52 +0000

¿Qué son las Variables de Entorno?

Las variables de entorno mantienen valores relacionados con el entorno actual, como el Sistema Operativo o las sesiones de usuario.

Ruta

Una de las más conocidas 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 pueden ser iniciados sin saber y escribiendo la ruta completa del archivo en la línea de comandos. (O en Windows, el diálogo Ejecutar en el menú de inicio o Win+R).

En Linux y Mac OS X, normalmente contiene todos los directorios bin y sbin relevantes para el usuario actual. En Windows, contiene al menos los directorios C:\Windows y C:\Windows\system32 - por eso puedes ejecutar calc.exe o notepad.exe desde la línea de comandos o el 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, ve aquí .)

Por ejemplo, si escribes calc (se puede omitir el .exe can) en la línea de comandos de Windows, se iniciará la Calculadora de Windows.

* Puedes añadir soporte para extensiones de archivo diferentes a .exe editando %PATHEXT% .

Otras

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

Creación de 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 ser lanzados.

Se puede usar esto cuando se escriben scripts o programas que se instalan o despliegan en múltiples máquinas y necesitan hacer referencia a valores que son específicos de estas máquinas. Aunque se puede lograr un efecto similar usando los ajustes de configuración específicos del programa, es más fácil hacerlo usando una variable de entorno si varios programas necesitan acceder al mismo valor.

 

Windows

GUI

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

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

  3. Haga clic con el botón derecho del ratón en (Mi) ordenador y haga clic en Propiedades, o simplemente pulse Win+Break.

  4. Hay muchas otras formas de llegar al mismo lugar, como escribir "variables de entorno" en el cuadro de búsqueda del menú de inicio/pantalla, etc.

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

También existe el Rapid Environment Editor , que ayuda a configurar y cambiar las variables de entorno en Windows sin 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 la ruta muy convenientemente es Path Editor .

Línea de comandos

Formato

Las variables de entorno en Windows se denotan con signos de porcentaje (%) alrededor del nombre:

%name%

eco

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

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

set

Para crear/configurar 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 aponer/añadir 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 configuradas de esta forma están disponibles para (el resto de) la duración del proceso Command Prompt en el que están configuradas, y están disponibles para los procesos que se inicien después de que las variables se hayan configurado.

setx

Para crear/configurar una variable permanentemente , 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 de set, no hay signo de igualdad y el valor debe ser encerrado entre comillas si contiene algún espacio. Ten en cuenta que las variables pueden expandirse a una cadena con espacios (por ejemplo, %PATH% se convierte en C:\Program Files), por lo que es mejor incluir comillas alrededor de los valores que contengan cualquier variable.

Debes agregar manualmente setx a las 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 incorporadas en Windows. Algunos ejemplos son: %WINDIR%, %SystemRoot%, %USERPROFILE% y %APPDATA%. Como la mayoría de los nombres de Windows, no distinguen entre mayúsculas y minúsculas.

 

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

Las variables de entorno en Linux se prefijan con un signo de dólar ($) como $HOME o $NOMBRE DE ANFITRIÓN. Muchas variables conocidas y estándar se escriben en mayúsculas para significar justamente eso. Tenga en cuenta que los nombres de las variables distinguen entre mayúsculas y minúsculas, lo que significa que $Usuario y $Usuario no están relacionados en absoluto desde el punto de vista del shell.

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

Configuración variables

Estos archivos son scripts de shell regulares y pueden contener más que sólo declaraciones de variables de entorno. Para establecer una variable de entorno, use export. Para mostrar sus variables de entorno actualmente definidas en una terminal, ejecute env.

El comando export 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; allí, el comando es setenv.

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

Tal vez al contrario de lo que se cree, OS X es más "Unix" que Linux. Además de los archivos ya mencionados, $PATH puede ser modificado en estos archivos:

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

 

Enlaces externos:

Variables de Entorno en XP Herramientas de Soporte para Windows XP Service Pack 2 (Incluye setx) Variables de Entorno en Windows Vista y Windows 7 Añadir ejecutables al Cuadro de Diálogo de Ejecución Mac OSX Tips - Configurar Variables de Entorno TLDP: Path Howto

337
64
2011-05-16 19:03:17 +0000

Este post 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 es también una excelente referencia.

Linux y la mayoría de los BSDs

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

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

  • csh, tcsh:

Las variables de entorno persistentes pueden establecerse durante varias etapas separadas:

  • Inicio de sesión:

  • Apertura de una ventana de terminal:

Windows NT series

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

  • Para hacer cambios persistentes, use Panel de Control → Sistema → Avanzado → Variables de Entorno. docs )

  • Las variables de entorno de todo el sistema se mantienen en el Registro, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, y se cargan en el arranque del sistema.

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

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

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

  • Para hacer cambios persistentes, añade o edita las líneas apropiadas de set en C:\AUTOEXEC.BAT, y luego reinicia.

VMS

(No pudo resistirse.)

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

64
9
2014-01-15 17:49:57 +0000

Para las variables de entorno bash shell PATH global (no terminal), sigo la convención usada en mi instalación de Ubuntu VM - otros shells variarán:

Caveat: La secuencia completa de inicio del shell, qué archivos .bashrc, .profile, etc. se obtienen en qué orden, cuándo tengo que volver a iniciar sesión para obtener visibilidad de las nuevas variables definidas, alias, etc, ¿cuál es la diferencia entre un shell de inicio de sesión, interactivo y no interactivo - yo uso cron?, y ¿por qué cuando hago un . ~/.bashrc mi estúpida variable PATH es cada vez más larga? son las preguntas clave que me vienen a la mente cuando pienso en mi variable PATH.

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

  1. Exportar las variables PATH y otras variables de entorno global (es decir, LD_LIBRARY_PATH) en el .profile;
  2. Use la lógica en ~/.profile para obtener $HOME/.bashrc si existe;
  3. 3. Cercar la ejecución del ~/.bashrc con una prueba para la ejecución interactiva, salir de otra manera. 4. Poner todos los alias, shopt, configuración del prompt, control de la historia, configuración del terminal, definición de la función, etc. (configuración interactiva relacionada) en la parte de ~/.bashrc que está protegida para que sólo se ejecute en modo interactivo;
  4. Deshágase de los demás archivos de inicio de bash, porque su existencia determina si la ruta de control a través de .profile y .bashrc funciona como se espera. Es decir, a menos que haya requisitos específicos para hacer lo contrario, elimine ~/.bash_profile & ~/.bash_login;
  5. Cuando estoy en el prompt del bash, y necesito actualizar alguna configuración predeterminada, edito mi archivo ~/.bashrc, y luego simplemente lo fuente con un . ~/.bashrc para obtener esos cambios en mi shell actual.
  6. Cuando hago un cambio en una variable de entorno como PATH, necesito modificar y hacer el source de mi ~/.profile;
  7. Pongo mis llamadas a fink, port, y brew configuraciones específicas en .profile.

Eso es mi 2 centavos en este tema.

9
8
2014-07-25 09:57:28 +0000

Q: WHAT son Variables de Entorno ?

A: Las Variables de Entorno son similares a las variables de 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:

USERPROFILE : directorio de usuarios dentro de los archivos del SO.

MAIL : donde se puede encontrar el correo de un usuario dentro de los archivos del SO.

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

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

Busca la variable PATH del sistema del entorno de Windows y comprueba cada ubicación para el ejecutable dado. Así, al agregar una ubicación a la variable PATH, se puede llamar directamente a un ejecutable.

De acuerdo con esto artículo de Wikipedia :

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


*Q: ¿Cómo agregar una ubicación a la variable PATH? *

A: Necesitas editar la cadena de variables de la variable PATH de las variables de entorno para incluir la ubicación de tu ejecutable.

Una forma de hacerlo se describe aquí :

  1. Abre el menú de inicio y haz clic con el botón derecho del ratón en el ordenador. Seleccione Propiedades.
  2. Seleccione Configuración avanzada del sistema. 3. En la pestaña Advanced, seleccione Environment Variables. 4. Seleccione EDITAR o NUEVO. (para el PATH que probablemente quieras EDITAR).
  3. Añade tu ruta de localización. por ejemplo: C:\wamp\bin\php\php5.5.12;

Espero que esto aclare algo de la confusión.

8