Não consigo encontrar onde os componentes internos de autocd
estão documentados. Infelizmente, você precisará verificar o código-fonte. No entanto, como Glenn aponta, se isso não for executado ao usar autocd
, então autocd
provavelmente não está usando cd
.
Eu posso pensar em duas soluções alternativas. Primeiro, você pode usar PROMPT_COMMAND
como Glenn sugeriu. Adicione isto ao seu .bashrc
:
sourcedir() {
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
}
PROMPT_COMMAND="sourcedir"
Agora, cada vez que você acessar esses diretórios, independentemente de como você chegou lá, os arquivos serão originados. Uma grande desvantagem dessa abordagem é que os arquivos serão originados sempre que um prompt for exibido, não apenas quando você for movido pela primeira vez para o diretório. Você pode evitar isso definindo uma variável no arquivo originado e somente sourcing se essa variável não estiver definida, mas isso está realmente ficando bastante complexo.
Em vez disso, sugiro que você configure aliases para mover para cada um dos diretórios e obter os arquivos relevantes. Adicione essas linhas ao seu ~/.bashrc
( source
é, na verdade, um alias para .
, mas .
é mais portátil):
alias staging="cd /home/ubuntu/deploys/staging && . /home/ubuntu/.appconfig/staging.env"
alias demo="cd /home/ubuntu/deploys/demo && . /home/ubuntu/.appconfig/demo.env"
alias prod="cd /home/ubuntu/deploys/prod && . /home/ubuntu/.appconfig/prod.env"
Agora, você pode executar staging
para acessar o diretório temporário e criar o arquivo relevante. O mesmo para cada um dos outros dois.