Meu script de teste:
#!/bin/bash
dirs -p >> work_note.txt
Em uma pilha de 10 diretórios, só recupero o primeiro. Se eu executar dirs -p
ou dirs -v
na linha de comando, obtenho a pilha inteira.
Qualquer dica ou conhecimento sobre o que estou perdendo seria apreciada.
OBSERVAÇÃO Meu objetivo principal é criar um processo de logout que grave o DIRSTACK em um arquivo para que eu possa lembrar o trabalho que estava fazendo em um terminal. Normalmente tenho vários terminais funcionando.
Responder1
The DIRSTACK
é uma variável local e não é passada para scripts, subshells, processos filhos e assim por diante. Eu recomendo usar uma função carregada em seu lugar .bashrc
em vez de um script.
Responder2
Usei esse truque para recuperar minha pilha de diretórios em todas as sessões. Eu costumava salvá-lo em um arquivo. Também consigo importar/exportar para outros terminais
Defina esta função no seu .bashrc
stackd ()
{
SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");
builtin cd $@ && builtin pushd "$PWD" > /dev/null;
dirs -l -p >> $HOME/.iostackd/dirstack && sort -u -o $HOME/.iostackd/dirstack $HOME/.iostackd/dirstack > /dev/null;
IFS=$SAVEIFS
}
sobrecarregue seu buitin 'cd' por alias
alias cd='stackd "$1"'