暂时在bash中改变当前的工作目录来运行一个命令

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

但是如果我这样做的话:

 cd SOME_PATH && run_some_command 

那么工作目录将会永久更改。 有没有办法像这样临时改变工作目录?

 PWD=SOME_PATH run_some_command 

您可以通过将命令行括在一对圆括号中,在子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 

bash有一个内build的

 pushd SOME_PATH run_stuff ... ... popd 

像这样的东西应该工作:

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