¿Existe un .bashrc o .bash_profile específico para la carpeta?

¿Existe un .bashrc o .bash_profile específico para la carpeta?

¿Es posible tener un script bash (como .bashrco .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 .bashrcse 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 ~/.ondirrcarchivo 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 ondirpersonalmente. Lo encontré mientras buscaba una forma automática de manejarconfiguración de usuario de git por directorio. En ese caso, ondirno se ajustaba a mis necesidades; terminé usando un alias de git pasando --configopciones 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 .profileno .bashrc.

información relacionada