Mi guión de prueba:
#!/bin/bash
dirs -p >> work_note.txt
En una pila de 10 directorios, solo obtengo el primero. Si ejecuto dirs -p
o dirs -v
en la línea de comando, obtengo la pila completa.
Se agradecería cualquier consejo o conocimiento sobre lo que me estoy perdiendo.
NOTA Mi objetivo principal es crear un proceso de cierre de sesión que escriba DIRSTACK en un archivo para poder recordar qué trabajo estaba haciendo en una terminal. Normalmente tengo varias terminales funcionando.
Respuesta1
Es DIRSTACK
una variable local y no se pasa a scripts, subcapas, procesos secundarios, etc. Recomiendo usar una función cargada en .bashrc
lugar de un script.
Respuesta2
Utilicé este truco para recuperar mi pila de directorios en cada sesión. Solía guardarlo en un archivo. También puedo importar/exportar a otros terminales
Defina esta función en su .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
}
sobrecarga tu buitin 'cd' por alias
alias cd='stackd "$1"'