临时更改bash中的当前工作目录以运行命令

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

但我若行这命令:

cd SOME_PATH && run_some_command

然后工作目录将被永久更改。有什么方法可以像这样临时更改工作目录吗?

PWD=SOME_PATH run_some_command
174129 次浏览

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

(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

像这样的东西应该工作:

sh -c 'cd /tmp && exec pwd'

巴斯有一个内置的

pushd SOME_PATH
run_stuff
...
...
popd