Есть ли специфичные для папки файлы .bashrc или .bash_profile?

Есть ли специфичные для папки файлы .bashrc или .bash_profile?

Возможно ли создать bash-скрипт (вроде .bashrcили .bash_profile, по сути), который будет выполняться только при переходе в определенную папку?

решение1

Добавьте это в свой ~/.bashrc.

Если .bashrcнаходится в текущем рабочем каталоге:

PROMPT_COMMAND='if [[ "$bashrc" != "$PWD" && "$PWD" != "$HOME" && -e .bashrc ]]; then bashrc="$PWD"; . .bashrc; fi'

решение2

В зависимости от вашего конкретного варианта использования и ограничений,ондирможет соответствовать вашим потребностям:

ondir — это небольшая программа для автоматизации задач, специфичных для определенных каталогов. Она работает, выполняя скрипты в каталогах, когда вы входите и выходите из них.

Это делается с помощью центрального ~/.ondirrcфайла для конфигурации per-dir. Напротив, умная PROMPT_COMMAND настройка, предложенная @Cyrus, позволяет размещать конфигурацию в отдельных каталогах. Каждый подход действителен; это зависит от ограничений и данных, с которыми вы имеете дело.

Отказ от ответственности:Я никогда не пользовался ondirлично. Я наткнулся на это, когда искал автоматический способ обработкиgit конфигурация пользователя для каждого каталога. В этом случае ondirэто не соответствовало моим потребностям — я в конечном итоге использовал псевдоним git, передавая --configпараметры в git clone.

решение3

дополнение от @Cyrus ответ, если вы используете zsh, вам нужно использовать precmd():

PROMPT_COMMAND='if [[ "$profile" != "$PWD" && "$PWD" != "$HOME" && -e .profile ]]; then profile="$PWD"; source .profile; fi'
precmd() { eval "$PROMPT_COMMAND" }

на него ответили изэтот ответ

примечание: мои быстрые тесты на .profileнет .bashrc.

Связанный контент