Cambié mi variable "INICIO" y ahora no puedo encontrar "~ / .bash_profile" para volver a cambiarla

15

Estaba jugando con las variables de entorno en mi Mac, tratando de aprender cómo usarlas y usé el comando nano ~/.bash_profiledonde luego agregué la línea HOME=/Users/MyCompName/Desktoppara actualizar mi variable de inicio.

Este cambio funcionó y se puede ver cuando uso printenvpara ver todas las variables de entorno, pero cuando fui a cambiar de HOMEnuevo, parecía que no podía encontrar ~/.bash_profilemás. ¿A donde se fué?

Mate
fuente
99
Básicamente ~significa$HOME
el.pescado
66
... así que si redefines $HOME, también ~se redefine
el.pescado

Respuestas:

32

Está en el mismo lugar.

Antes de que el cambio se ~expanda a algo así /Users/YourUserName, el caparazón lo encuentra .bash_profileallí. Una vez que el archivo se obtiene, se ~expande a otra ruta, por lo que ~/.bash_profileya no apunta al archivo relevante. Esto es porque en este contexto ~significa $HOME.

Si conoce la ruta completa a su directorio de inicio real, puede usarlo en lugar de ~. En Mac probablemente se vería así:

nano /Users/YourUserName/.bash_profile

O deje que su Bash busque su directorio de inicio en la base de datos de usuarios en lugar de solo mirarlo $HOME. Esto no requiere que recuerdes nada:

nano ~YourUserName/.bash_profile

Modificar su HOMEvariable sin cambiar su directorio personal real no es la mejor idea. Cambiar el directorio de inicio de cualquier usuario es una tarea administrativa, por lo general, los usuarios normales no pueden hacer esto.

revs Kamil Maciorowski
fuente
Impresionante pude encontrarlo de nuevo, gracias! ¿Le importaría dar más detalles sobre lo que quiere decir con "después de que se obtiene el archivo"? No estoy familiarizado con lo que significa obtener un archivo
Matt
66
@Matt .bash_profiletiene una forma de script Bash. Puede ejecutar un script o obtenerlo. Ejecutar significa crear una subshell y ejecutar el script línea por línea allí. Abastecimiento significa ejecutar el script en el shell actual . Algunas tareas que están destinadas a afectar el shell actual no se pueden ejecutar en un subshell; cambiar una variable para el shell actual es una de ellas. Es por eso que algunos archivos se obtienen, no se ejecutan en una subshell. Para obtener un archivo de forma manual, use . file( .está especificado por POSIX) o source file( sourcees una extensión que no es POSIX que pocos shells entienden).
Kamil Maciorowski
2
Si usted (Matt) no sabe dónde solía estar su directorio personal, puede utilizarlo nano ~YourUserName/.bash_profile. Esto buscará su directorio de inicio en la base de datos de usuarios en lugar de solo mirar $ HOME.
Stig Hemmer
1
@StigHemmer La respuesta ahora es wiki comunitaria. Su útil comentario ha sido asimilado. Gracias.
Kamil Maciorowski