web-dev-qa-db-fra.com

Changer temporairement le répertoire de travail actuel dans bash pour exécuter une commande

Je sais que je peux utiliser la commande cd pour modifier mon répertoire de travail dans bash.

Mais si je fais cette commande:

cd SOME_PATH && run_some_command

Ensuite, le répertoire de travail sera changé de façon permanente. Y a-t-il un moyen de changer le répertoire de travail juste temporairement comme ceci?

PWD=SOME_PATH run_some_command
149
Ethan Zhang

Vous pouvez exécuter le cd et l'exécutable dans un sous-shell en plaçant la ligne de commande entre deux parenthèses:

(cd SOME_PATH && exec_some_command)

Démo:

$ 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 a intégré

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

Quelque chose comme ça devrait marcher:

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