我在我的 bash 脚本中做一些适当的“pushd/popd 清理”时遇到了一些麻烦。那就是:如果我做pushd
了几次,我想确保做相同数量的popd
before exit
。
但是,我注意到 pushd/popd 堆栈似乎不是全局的。
假设我example-pushd-twice.sh
在 homedir 中调用了这个脚本:
pushd /etc
pushd /tmp
我从我的 homedir 中的 shell 执行此操作:(导致输出块引用)
dirs
~
./example-pushd-twice.sh
/etc ~
/tmp /etc ~
我现在希望仍然在/tmp
并且仍然有一个包含 3 个目录的目录堆栈,但是:
dirs
~
这是正确的行为吗?我可以信任一个 shell 脚本来调用它自己的 pushd/popd 堆栈,这样我就不必关心事后清理了吗?