Возможно ли создать 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
.