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$