Я в настоящее время переопределяю встроенную команду cd для источника файла среды на основе среды, которая в настоящее время строится.
Мой главный вопрос касается того, как cd запускается, когда у меня включен shopt -s autocd --дя на autocd, чтобы добраться до конкретных каталогов, мои строки source не выполняются. Где я могу узнать больше о том, как autocd запускает cd и почему это работает только при явном вызове cd?
Мой .bashrc содержит это для «автоматического поиска»: [!d2 ]
cd() {
builtin cd "$@"
if [[ `pwd` == '/home/ubuntu/deploys/staging' ]]; then
echo "Sourcing ~/.appconfig/staging.env!";
source /home/ubuntu/.appconfig/staging.env;
fi
if [[ `pwd` == '/home/ubuntu/deploys/demo' ]]; then
echo "Sourcing ~/.appconfig/demo.env!"
source /home/ubuntu/.appconfig/demo.env;
fi
if [[ `pwd` == '/home/ubuntu/deploys/prod' ]]; then
echo "Sourcing ~/.appconfig/prod.env!"
source /home/ubuntu/.appconfig/prod.env;
fi
}
Я знаю, что это немного опасно и может иметь непреднамеренные последствия, но я могу жить с этим пока. Если есть лучшее решение для автоматического поиска списка переменных среды, когда cd входит в каталог, я все уши.