web-dev-qa-db-ja.com

コマンドを実行するためにbashの現在の作業ディレクトリを一時的に変更します

cdコマンドを使用して、bashで作業ディレクトリを変更できることを知っています。

しかし、このコマンドを実行すると:

cd SOME_PATH && run_some_command

その後、作業ディレクトリは永続的に変更されます。このように一時的に作業ディレクトリを変更する方法はありますか?

PWD=SOME_PATH run_some_command
149
Ethan Zhang

コマンドラインをかっこで囲むことにより、サブシェルで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
261
codaddict

bashには組み込みの

pushd SOME_PATH
run_stuff
...
...
popd 
106
pizza

このような何かが動作するはずです:

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