¿Es posible tener un script bash (como .bashrc
o .bash_profile
, básicamente) que se ejecute solo al realizar un CD en una carpeta específica?
Respuesta1
Añade esto a tu ~/.bashrc
.
Si .bashrc
se encuentra en el directorio de trabajo actual:
PROMPT_COMMAND='if [[ "$bashrc" != "$PWD" && "$PWD" != "$HOME" && -e .bashrc ]]; then bashrc="$PWD"; . .bashrc; fi'
Respuesta2
Dependiendo de su caso de uso exacto y sus limitaciones,ondirpuede adaptarse a sus necesidades:
ondir es un pequeño programa para automatizar tareas específicas de determinados directorios. Funciona ejecutando scripts en directorios cuando entras y sales de ellos.
Para ello, utiliza un ~/.ondirrc
archivo central para la configuración por directorio. Por el contrario, la configuración inteligente PROMPT_COMMAND
que sugirió @Cyrus permite que la configuración resida en los directorios individuales. Cada enfoque es válido; Depende de las limitaciones y los datos con los que esté tratando.
Descargo de responsabilidad:Nunca lo he usado ondir
personalmente. Lo encontré mientras buscaba una forma automática de manejarconfiguración de usuario de git por directorio. En ese caso, ondir
no se ajustaba a mis necesidades; terminé usando un alias de git pasando --config
opciones a git clone
.
Respuesta3
Además de la respuesta de @Cyrus, si usa zsh
, debe usar precmd()
:
PROMPT_COMMAND='if [[ "$profile" != "$PWD" && "$PWD" != "$HOME" && -e .profile ]]; then profile="$PWD"; source .profile; fi'
precmd() { eval "$PROMPT_COMMAND" }
se responde desdeesta respuesta
nótese bien:
mis pruebas rápidas para .profile
no .bashrc
.