
使用 bash 是否有办法推送和弹出当前工作目录?我尝试写入,bash;cd dir; ./dostuff;exit;
但当前目录现在是dir
。
答案1
有pushd
和popd
Bash 将保留您访问的目录的历史记录,您只需提出请求即可。Bash 将历史记录存储在堆栈中,并使用命令 pushd 和 popd 来管理堆栈。
例子:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
答案2
调用bash
会启动一个新的子 shell,它有自己的输入;在它退出之前,其他命令都不会运行。用括号括住要运行的命令也会启动一个新的子 shell,但它会运行其中的命令。
( cd dir ; ./dostuff )
答案3
如果不需要多级目录历史记录,您也可以执行以下操作:
cd foo
# do your stuff in foo
cd -
pushd
与/相比popd
,它的缺点是,如果cd foo
失败,您最终会进入错误的目录cd -
。
(可能cd -
在脚本之外更方便。“让我们回到我刚才所在的地方。”)
答案4
pushd
添加到目录堆栈
popd
从目录堆栈中删除
dirs
查看目录堆栈
dirs -p
“每行显示一个目录条目”
dirs -c
“清除目录堆栈”