Я сталкивался с этой проблемой сейчас несколько раз, и я хотел бы найти способ автоматизировать / написать сценарий, который включает в себя изменение личности или среды (я не уверен, как это точно назвать).

Простым примером будет скрипт, где часть должна быть выполнена с su . (например, make install ). Для этого можно использовать sudo . Однако есть и другие изменения среды, в которых нет такого решения. Вероятно, хорошо известен Python virtualenv, в котором можно легко представить такой сценарий, как

source virtEnv/bin/activate
python myScript.py

или просто скрипт, который вызывает screen . Сейчас я собираю gstreamer, который я хотел бы автоматизировать в скрипте, потому что позже мне придется развернуть эту установку на нескольких других компьютерах.

for i in gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-python gnonlin gst-ffmpeg 
do
   gst-head
   cd ./$i
   git checkout tags/1.1.1
   ./autogen.sh
   make -j7
   exit
done

Где gst-head - это gst-uninstalled который загружает локальный файл pkg_config (если я прав) и помещает меня в отдельную среду. Если я добавлю это в сценарий, сценарий остановит его выполнение и продолжит работу, как только я exit из этой среды.

1 ответ1

0

Та "среда", в которую скрипт "помещает вас", фактически является новым экземпляром вашей оболочки. И вместо простого вызова gst-head без параметра, вы должны передавать команды в качестве аргументов! Можете ли вы увидеть эту часть в сценарии?

# if we got a command, run it, else start a shell
if test ! -z "$1";
then
  $@
  exit $?
fi

Я думаю, что вы должны попытаться использовать это. Кстати, если вы хотите запустить оболочку любой ценой, то вы не сможете взаимодействовать с ней, если не будете использовать ожидаемый каким-либо образом (либо автономный сценарий ожидания, либо встроенный в сценарий оболочки).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .