Você pode preencher previamente a pilha de diretórios no arquivo ~/.bashrc
, se desejar:
for dir in "$HOME/dir" /usr/src /usr/local/lib; do
pushd -n "$dir" >/dev/null
end
ou, se você quiser colocar os diretórios em uma matriz e usá-los de lá:
dirstack=( "$HOME/dir"
/usr/src
/usr/local/lib )
for dir in "${dirstack[@]}"; do
pushd -n "$dir" >/dev/null
end
unset dirstack
Com -n
, pushd
não alterará o diretório de trabalho, mas apenas adicionará o diretório fornecido à pilha.
Se desejar, você pode armazenar o valor do ${DIRSTACK[@]}
(nome da variável em maiúsculas aqui), que é a pilha do diretório atual , em um arquivo de ~/.bash_logout
e, em seguida leia esse arquivo em ~/.bashrc
em vez de usar uma matriz predefinida.
Em ~/.bash_logout
:
printf '%s\n' "${DIRSTACK[@]}" >"$HOME/.dirstack"
Em ~/.bashrc
:
while read dir; do
pushd -n "$dir" >/dev/null
done <"$HOME/.dirstack"
Eu não sei o quão bem isso funcionaria em uma situação em que você usa vários terminais. O arquivo .dirstack
seria sobrescrito toda vez que um terminal saísse, se ele executasse um bash
como um shell de login.