Bash tem a variável CDPATH
.
$ CDPATH="$CDPATH:~/dev/scripts/:/some/other/one/too"
$ cd python_code
/home/username/dev/scripts/python_code
$ pwd
/home/username/dev/scripts/python_code
Você pode criar scripts para a manutenção do valor da seguinte forma:
No seu ~/.bashrc
:
cd() {
while read -r dir
do
if [[ ! $CDPATH =~ $dir ]]
then
CDPATH="${CDPATH}:${dir}"
fi
done < ~/.cdpath
builtin cd "$@"
}
cd . # update CDPATH
export CDPATH
Em um arquivo chamado /usr/local/bin/mkcdpath
:
#!/bin/bash
# update the stored CDPATH directory list
# run from cron, can be run manually
# requires Bash >= 3.2
cdp=$(<~/.cdpath)
while read -r dir
do
if [[ ! $cdp =~ $dir ]]
then
cdp="${cdp}:${dir}"
fi
done < <(find /anchored_at_root -maxdepth 1 some_find_args -type d)
echo "$cdp" > ~/.cdpath
Execute periodicamente usando cron
.
Agora, a qualquer momento que você usar cd
, ele atualizará o CDPATH
do shell atual e executará a alteração do diretório de acordo com ele (além de fazer% normalcd
s, que são tentadas primeiro). Você poderia alterar o nome da função (e remover o comando cd
) para torná-lo apenas uma função de atualização e usar o comando cd normal - ele simplesmente não atualizaria o valor automaticamente.