Как Bash может выполнить команду в другом контексте каталога?
У меня есть команда, которая вызывается из очень конкретных каталогов. Существует только один исполняемый файл, сидящий в / bin для этой программы, и текущий рабочий каталог очень важен для его правильного запуска. Сценарий влияет на файлы, которые находятся внутри каталога, в котором он выполняется.
теперь у меня также есть пользовательский скрипт оболочки, который делает некоторые вещи в одном каталоге, но мне нужно вызвать эту команду, упомянутую выше, как если бы она была в другом справочник.
Как это сделать в сценарии оболочки?
4 ответа:
можно использовать
cdвстроенные илиpushdиpopdвстроенные для этой цели. Например:# do something with /etc as the working directory cd /etc : # do something with /tmp as the working directory cd /tmp :вы используете встроенные имена так же, как и любую другую команду, и можете изменять контекст каталога столько раз, сколько вам нравится в скрипте.
использовать
cdв подоболочке; сокращенный способ использовать этот вид подоболочки-скобки.(cd wherever; mycommand ...)
если вы хотите вернуться в свой текущий рабочий каталог:
current_dir=$PWD;cd /path/to/your/command/dir;special command ARGS;cd $current_dir;
- мы устанавливаем переменную
current_dirравнуюpwd- после этого мы собираемся
cdтуда, где вам нужно запустить свою команду- тогда мы запускаем команду
- тогда мы собираемся
cdвернемся к нашей переменнойcurrent_dirнаслаждайтесь