Как 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
наслаждайтесь