Мой тестовый сценарий:
#!/bin/bash
dirs -p >> work_note.txt
В стеке из 10 каталогов я получаю только верхний 1. Если я запускаю dirs -p
или dirs -v
в командной строке, я получаю весь стек.
Буду признателен за любые советы или знания о том, чего мне не хватает.
ПРИМЕЧАНИЕ Моя главная цель — создать процесс выхода из системы, который записывает DIRSTACK в файл, чтобы я мог вспомнить, какую работу я делал в терминале. Обычно у меня работает несколько терминалов.
решение1
Это DIRSTACK
локальная переменная, которая не передается в скрипты, подоболочки, дочерние процессы и т. д. Я рекомендую использовать функцию, загруженную в ваш, .bashrc
вместо скрипта.
решение2
Я использовал этот трюк, чтобы получить мой dir stack для каждой сессии. Я использовал его, чтобы сохранить в файле. Я также могу импортировать / экспортировать в другие терминалы
Определите эту функцию в вашем .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
}
перегрузить встроенный 'cd' псевдонимом
alias cd='stackd "$1"'