Estaba jugando con las variables de entorno en mi Mac, tratando de aprender cómo usarlas y usé el comando nano ~/.bash_profile
donde luego agregué la línea HOME=/Users/MyCompName/Desktop
para actualizar mi variable de inicio.
Este cambio funcionó y se puede ver cuando uso printenv
para ver todas las variables de entorno, pero cuando fui a cambiar de HOME
nuevo, parecía que no podía encontrar ~/.bash_profile
más. ¿A donde se fué?
~
significa$HOME
$HOME
, también~
se redefineRespuestas:
Está en el mismo lugar.
Antes de que el cambio se
~
expanda a algo así/Users/YourUserName
, el caparazón lo encuentra.bash_profile
allí. Una vez que el archivo se obtiene, se~
expande a otra ruta, por lo que~/.bash_profile
ya 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í: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:Modificar su
HOME
variable 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.fuente
.bash_profile
tiene 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) osource file
(source
es una extensión que no es POSIX que pocos shells entienden).nano ~YourUserName/.bash_profile
. Esto buscará su directorio de inicio en la base de datos de usuarios en lugar de solo mirar $ HOME.