Выполнять скрипты bash при вводе каталога

Каков наилучший способ выполнения скрипта при входе в каталог?
Когда я перехожу в новый каталог, я бы хотел, чтобы bash выполнял сценарий projectSettings.bash, как это делает RVM.

Вы можете сделать cd функцией (и pop и pushd ), и заставить ее обнаруживать, если вы введете этот конкретный каталог.

 cd () { builtin cd "$@" && chpwd; } pushd () { builtin pushd "$@" && chpwd; } popd () { builtin popd "$@" && chpwd; } unset_all_project_settings () { # do whatever it takes to undo the effect of projectSettings.bash, # eg unset variables, remove PATH elements, etc. } chpwd () { case $PWD in /some/directory|/some/other/directory) . ./projectSettings.bash;; *) unset_all_project_settings;; esac } 

Не делайте этого в каталогах, которые вы не указали в белый список, потому что кому-то будет очень легко обмануть вас в запуске произвольного кода – отправьте вам архив, чтобы вы разархивировали его, изменили в созданный им каталог, Теперь запустите код злоумышленника.

Я не рекомендую этот подход, потому что это означает, что скрипт будет выполнен, даже если вы введете этот каталог по какой-либо причине, не связанной с работой над проектом. Я предлагаю иметь определенную функцию, которая изменяется в каталог проекта и создает сценарий настроек.

 myproj () { cd /some/directory && . ./projectSettings.bash }