164 votes

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

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

Mais si je fais cette commande :

cd SOME_PATH && run_some_command

Le répertoire de travail sera alors modifié de façon permanente. Existe-t-il un moyen de changer le répertoire de travail de façon temporaire ?

PWD=SOME_PATH run_some_command

286voto

codaddict Points 154968

Vous pouvez exécuter le cd et l'exécutable dans un sous-shell en entourant la ligne de commande d'une paire de parenthèses :

(cd SOME_PATH && exec_some_command)

Démonstration :

$ pwd
/home/abhijit
$ (cd /tmp && pwd)  # directory changed in the subshell
/tmp 
$ pwd               # parent shell's pwd is still the same
/home/abhijit

115voto

pizza Points 2855

Bash possède une fonction intégrée

pushd SOME_PATH
run_stuff
...
...
popd

28voto

yazu Points 1976

Quelque chose comme ceci devrait fonctionner :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X