Я хочу выполниться, команда как 'мерзавец отмечают-l' в каталоге,/home/user/git/app/, но я нахожусь на самом деле в/home/user. Как я могу сделать это в ударе, не изменяя мой рабочий каталог?
Так НЕТ:
cd /home/user/git/app && git tag -l
потому что это на самом деле изменяет мой рабочий каталог и должно сделать 'CD/home/user' снова.
Просто кронштейн все это. Это будет запустить его в подполе, который может перейти в любой каталог и не влиять на ваш «текущий рабочий». Вот пример.
noufal@sanctuary% pwd
/tmp/foo
noufal@sanctuary% (cd ../bar && pwd && ls -a )
/tmp/bar
./ ../
noufal@sanctuary% pwd
/tmp/foo
noufal@sanctuary%
Попробуйте использовать
cd -
после того, как все сделано. Эта команда используется для возврата к последнему рабочему каталогу.
Если рассматриваемая команда всегда будет команда Git, вы должны просто использовать - GIT-DIT
и - рабочее дерево
Параметры, чтобы сказать Git, что делать! (Или если вы делаете это много в течение сценария, установите переменные git_dir и git_work_tree до соответствующих путей)
Если это общий вопрос, я считаю, что andrzej имеет начало наилучшего предложения: использовать подставка. Тем не менее, правильный способ начать подпульду, чтобы использовать скобки, чтобы не использовать подстановку команды (если вы фактически не хотите захватить вывод):
( cd $dir && run_command )
Другое решение, как предложено FELIX и IBREAD, будет работать, Но будьте осторожны - если команда, которую вы выполняете, возможно, является функцией оболочки, то она также может и изменить эффект CD -
в конце. Самое безопасное в общем случае состоит в том, чтобы сначала хранить текущий каталог в переменной.
Вот еще одно решение: используйте pushd для изменения каталога, затем popd для возврата:
pushd /home/user/git/app && git tag -l; popd
Вы можете сделать что-то вроде (CD / HOME / user / git / app && git tag -l)
. Это порождает новую оболочку и выполняет команды в оболочке, не меняя оболочку. Вы можете проверить это, выполняя следующее:
$ echo $OLDPWD
/Users/daveshawley
$ (cd / && ls)
...
$ echo $OLDPWD
/Users/daveshawley