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 PATH
significan para el sistema operativo, así como pautas simples sobre cómo configurarlas y leerlas en consecuencia.
env
y se enumeran las opciones necesarias.CMD
y escribirset
, o alPowerShell
escribirGet-Childitem env:
.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 del archivo en la línea de comandos . (O en Windows, el cuadro de diálogo Ejecutar en el menú Inicio o + R).En Linux y Mac OS X, que por lo general tiene todo
bin
ysbin
directorios relevantes para el usuario actual. En Windows, contiene al menos los directoriosC:\Windows
yC:\Windows\system32
, es por eso que puede ejecutarcalc.exe
onotepad.exe
desde la línea de comando o el cuadro de diálogo Ejecutar , pero nofirefox.exe
. (Firefox se encuentra enC:\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
.exe
editando%PATHEXT%
.Otro
Otras variables pueden indicarle a los programas qué tipo de terminal se usa (
TERM
en Linux / Mac OS X) o, en Windows, dónde se encuentra la carpeta de Windows (por ejemplo,%WINDIR%
esC:\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
Abierto
Control Panel » System » Advanced » Environment Variables
.Escriba
control sysdm.cpl,,3
en el cuadro de diálogo Ejecutar ( + R) y haga clicEnvironment Variables
.Para editar variables de usuario también puede escribir
en el cuadro de diálogo Ejecutar.
Haga clic derecho en (Mi) Computadora y haga clic en Propiedades, o simplemente presione + Break.
Advanced » Environment Variables
.Advanced system settings » Environment Variables
.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:
eco
Para mostrar el valor de una variable de entorno en
cmd.exe
, escribaecho %name%
.conjunto
Para crear / establecer una variable, use
set varname=value
:Para agregar / agregar una variable, use
set varname=value;%varname%
: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"
: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%
convierteC:\Program Files
), por lo que es mejor incluir comillas alrededor de los valores que contienen cualquier variable.Debe 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í 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
/etc
carpeta, 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.profile
archivo 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, ejecuteenv
.El
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 al shell Bourne pre POSIX.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/paths
contiene todos los directorios predeterminados que se agregan a la ruta, como/bin
y/usr/sbin
./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:
fuente
SETX
para hacer cambios permanentes. Tiene una sintaxis ligeramente diferente.SETX
tiene que ser agregado desde elWindows Server 2003 Resource Kit
para versiones anteriores deNT
.WM_SETTINGCHANGE
imagino 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.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 .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) osetenv
(csh, tcsh).Ejemplos para anteponiendo
$HOME/bin
a$PATH
en bash o zsh:(En este caso particular,
export
es innecesario yaPATH
que ya forma parte del entorno).csh, tcsh:
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.
bash
utiliza/etc/profile
y 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
~/.profile
en mi sistema.Apertura de una ventana de terminal:
bash
usos/etc/bash.bashrc
y~/.bashrc
.Windows NT series
En Símbolo del sistema (
cmd.exe
), useset name=value
para cambiar las variables de entorno para esa ventana.Para añadir
c:\bin
a%PATH%
, uso:Esto solo afecta ese
cmd.exe
proceso 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
PATH
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 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\Environment
y se cargan en el arranque del sistema.El entorno del usuario se mantiene
HKCU\Environment
y carga durante el inicio de sesión del usuario.Por defecto, el sistema también busca
set
comandos en elAUTOEXEC.NT
archivo.MS-DOS, Windows de 16 bits, Windows 9x series
En MS-DOS Prompt (
command.com
), useset name=value
, como en WinNT.Del mismo modo, la ejecución
set
interactiva solo afecta a esacommand.com
instancia, junto con cualquier proceso nuevo que se inicie desde ella.Para realizar cambios persistentes, agregue o edite
set
líneas apropiadasC:\AUTOEXEC.BAT
y luego reinicie.explorer.exe
desde 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
.fuente
DCL$PATH
para " comandos foráneos automáticos ".Para las variables de entorno globales de
bash
shellPATH
(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
,.profile
etc. 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: ¿usocron
? ¿Y por qué cuando hago una. ~/.bashrc
mi estúpidaPATH
variable crece más y más? son las preguntas clave que me vienen a la mente cuando pienso en miPATH
variable.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:
PATH
variables de entorno global y otras (es decirLD_LIBRARY_PATH
) variables en el.profile
;~/.profile
fuente$HOME/.bashrc
si existe;~/.bashrc
con una prueba para ejecución interactiva, salga de lo contrario;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~/.bashrc
que está protegida para ejecutarse solo en modo interactivo;.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
;~/.bashrc
archivo, luego simplemente lo. ~/.bashrc
obtengo con un para obtener esos cambios en mi shell actual.PATH
, necesito modificar y buscar mi~/.profile
;.profile
.Esos son mis 2 centavos sobre este tema.
fuente
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 :
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 :
C:\wamp\bin\php\php5.5.12;
Espero que esto aclare algo de la confusión.
fuente