Если рассматриваемая команда всегда будет командой git, вы должны просто использовать опции --git-dir
и --work-tree
, чтобы указать git, что делать! (Или, если вы делаете это много в течение сценария, установите переменные GIT_DIR и GIT_WORK_TREE на соответствующие пути)
Если это общий вопрос, я считаю, что Анджей начал с лучшего предложения: используйте подоболочку. Однако правильный способ запустить подоболочку - использовать круглые скобки, а не использовать подстановку команд (если вы на самом деле не хотите захватить вывод):
( cd $dir && run_command )
Другое решение, предложенное Феликсом и ibread, конечно, будет работать, но будьте осторожны - если выполняемая вами команда, возможно, является функцией оболочки, то она также может cd и изменить эффект cd -
в конце. В общем случае безопаснее всего сначала сохранить текущий каталог в переменной.