Exportar PATH directamente desde la línea de comandos en Yosemite. ¿Dónde está mi PATH?

3

Quiero usar la última versión de git que instalé a través de Homebrew, así que tuve que cambiar mi variable PATH para garantizar que OS X use la versión de Homebrew en lugar de la versión obsoleta que se incluye con OS X y las herramientas de línea de comandos . Este tutorial recomienda simplemente ejecutarse:

$ export PATH=/usr/local/bin:$PATH

Eso es lo que hice y funcionó muy bien.

Mi pregunta es: ¿dónde modificó este comando mi variable PATH ? No tengo los archivos ~/.bashrc , ~/.bash_profile o ~/.profile en mi directorio de inicio, pero cuando $ echo $PATH , entonces PATH parece correcto y al ejecutar which git y git --version todo aparece para apuntar al lugar correcto. Veo las rutas correctas enumeradas en /etc/paths , pero si agrego una ruta de prueba usando export desde la línea de comandos, la ruta de prueba no aparece en ese archivo.

Otra pregunta: ¿es esta una buena manera de modificar mi variable PATH ?

Pregunta final: ¿cuáles son las ventajas y desventajas de este método?

Editar: Veo las rutas correctas enumeradas en /etc/paths , pero si agrego una ruta de prueba usando $ export PATH=/test:$PATH , la ruta de prueba no aparece en /etc/paths/ , pero aparece primero cuando ejecuto $ echo $PATH , sin embargo, se pierde después de reiniciar.

    
pregunta cfx 27.05.2015 - 17:44

1 respuesta

3

El 3 de junio publicaste el siguiente comentario

@DavidAnderson Entonces, si entiendo correctamente, ejecutar export PATH ... desde una sesión de shell interactiva solo afecta a $ PATH para esa sesión y la nueva ruta agregada no se guarda en ningún lugar (y, por lo tanto, no hay ningún archivo donde la nueva ruta agregada puede ser editado). Por ejemplo, si ejecuto export PATH = / test: $ PATH pero quería exportar el directorio / testing_123, entonces mi mejor opción es simplemente iniciar una nueva sesión en lugar de intentar localizar y editar un archivo que contenga el directorio erróneo / test. (porque no hay tal archivo). Correcto?

Mi respuesta a tu comentario

Desde la página de manual de bash, he extraído lo siguiente.

A parameter is an entity that stores values.  It can be a name, a
number, or one of the special characters listed below under Special
Parameters.  A variable is a parameter denoted by a name.  A variable 
has a value and zero or more attributes.

PATH es el nombre de una variable. Normalmente, esta variable solo tiene activado el atributo de exportación. El atributo de exportación marca una variable para exportar a los comandos subsiguientes a través del entorno. El comando export activa el atributo de exportación, pero en el caso de la variable PATH , el atributo de exportación ya está activado. Por lo tanto, para la variable PATH , los siguientes cuatro comandos son equivalentes.

PATH=/test:$PATH
export PATH=/test:$PATH
declare PATH=/test:$PATH
typeset PATH=/test:$PATH

En cuanto a tu comentario, estás en lo correcto. No hay tal archivo.

En el caso de un error del tipo que mencionó, no creo que comenzar una nueva sesión sea la mejor opción. Yo ingresaría el comando

declare -p PATH

y luego resaltar la salida. Luego puede cortar y pegar el texto como su próximo comando. Antes de pulsar la tecla de retorno, use las otras teclas para corregir su error.

Para obtener más información sobre este tema, consulte la página del manual de bash. O bien ingrese el comando

man bash

o visite el sitio: bash - GNU Bourne-Again SHELL .

En respuesta a tu edición:

Sí, se supone que debes perder / probar en tu variable PATH al reiniciar. Es por esto que necesita poner un comando export en su archivo ~./profile .

Respuesta original:

Pareces confundido cuando se ejecutan los archivos ~/.bashrc , ~/.bash_profile y ~/.profile . Quizás esto ayude.

Así es como configuro mi computadora. Tengo tres archivos: ~/.profile , ~/.bashrc y ~/.bashcm . Si falta alguno de estos, puede crearlos.

Cuando inicio la aplicación Terminal o selecciono "Nueva ventana" de "Shell" en la barra de menú, se invoca un shell de inicio de sesión de bash interactivo. Este shell ejecuta el script ~/.profile en el inicio. Puede sustituir ~/.bash_profile o ~/.bash_login por ~./profile si lo desea. Si se inicia un shell de bash interactivo que no es un shell de inicio de sesión, el shell lee y ejecuta los comandos desde ~/.bashrc . El propósito de ~/.bashcm es proporcionar una secuencia de comandos común para ser ejecutada por ~/.profile y ~/.bashrc .

Aquí hay un ejemplo de un archivo .profile

echo in .profile
source ~/.bashcm
export PATH=$PATH:~/bin
echo exit .profile

El propósito de los comandos de eco es ilustrar cuándo se ejecutan los scripts. Una vez que se sienta cómodo, puede comentar o eliminarlos. El archivo .profile ejecuta el script .bashcm , luego modifica la variable PATH y sale. A continuación se muestra un ejemplo de archivo .bashcm .

echo in bashcm
PS1='\h:\W \u\$ '
alias home='cd ~'
echo exit .bashcm

Aparte de los comandos de eco, .bashcm solo establece la solicitud y un alias. El archivo de ejemplo .bashrc que se muestra a continuación simplemente ejecuta el script .bashcm . Nuevamente, los comandos de eco son solo para fines de ilustración.

echo in .bashrc
source ~/.bashcm
echo exit .bashrc

Si inicio la aplicación de Terminal y entro en los comandos

echo $PATH
alias
bash
echo $PATH
alias

in the window, I get the following.

Last login: Wed May 27 14:48:19 on ttys000
in .profile
in bashcm
exit .bashcm
exit .profile
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$ bash
in .bashrc
in bashcm
exit .bashcm
exit .bashrc
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$ 
    
respondido por el David Anderson 27.05.2015 - 22:07

Lea otras preguntas en las etiquetas