222

我知道我可以使用cd命令在 bash 中更改我的工作目录。

但是,如果我执行此命令:

cd SOME_PATH && run_some_command

然后工作目录将永久更改。有没有办法像这样暂时改变工作目录?

PWD=SOME_PATH run_some_command
4

3 回答 3

405

您可以cd通过将命令行括在一对括号中来在子 shell 中运行 和 可执行文件:

(cd SOME_PATH && exec_some_command)

演示:

$ pwd
/home/abhijit
$ (cd /tmp && pwd)  # directory changed in the subshell
/tmp 
$ pwd               # parent shell's pwd is still the same
/home/abhijit
于 2012-04-30T10:30:33.433 回答
155

bash 有一个内置的

pushd SOME_PATH
run_stuff
...
...
popd 
于 2012-04-30T16:15:54.380 回答
37

像这样的东西应该工作:

sh -c 'cd /tmp && exec pwd'
于 2012-04-30T10:35:43.967 回答