暂时在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'