使“pushd”目录堆栈持久化

使“pushd”目录堆栈持久化

好的,这是一个简短的问题。我只是碰巧知道通过pushd命令,我们可以将更多工作目录添加到列表中,这很方便。但是有没有办法让这个列表永久存在,这样它就可以在重新启动或注销后继续存在?

答案1

~/.bashrc如果您愿意,您可以在文件中预先填充目录堆栈:

for dir in "$HOME/dir" /usr/src /usr/local/lib; do
    pushd -n "$dir" >/dev/null
end

或者,如果您想将目录放入数组中并从那里使用它们:

dirstack=( "$HOME/dir"
           /usr/src
           /usr/local/lib )

for dir in "${dirstack[@]}"; do
    pushd -n "$dir" >/dev/null
end

unset dirstack

使用-n,pushd实际上不会更改工作目录,而只是将给定目录添加到堆栈中。

如果您愿意,您可以存储数组的值DIRSTACK(此处为大写变量名),即当前的目录堆栈,放入文件中~/.bash_logout,然后读取该文件~/.bashrc而不是使用预定义的数组。

~/.bash_logout

declare -p DIRSTACK >"$HOME/.dirstack"

~/.bashrc

if [ -f "$HOME/.dirstack" ]; then
    source "$HOME/.dirstack"
fi

我不知道这在您使用多个终端的情况下效果如何。.dirstack如果终端bash作为登录 shell 运行,则每次退出时该文件都会被覆盖。

相关内容