Как я препятствую тому, чтобы сценарий завершился, когда оболочка выходит?

Существуют загрузки полезной информации о http://www.pendrivelinux.com/category/usb-installs-from-linux/

Ubuntu идет с утилитой под названием создатель Загрузочного диска, которого Вы могли использовать от живой ubuntu CD.

Я всегда использую unetbootin хотя, поскольку можно играть с настройками немного больше и сделать живой USB с персистентным устройством хранения данных и нести рабочий стол в кармане.

6
29.11.2011, 22:36
3 ответа

Необходимо поместить nohup перед командой тот запуск firefox, таким образом, это должно, похож на это:

>$ nohup firefox

6
27.01.2020, 20:27
  • 1
    Также выполнение bashrc в Вашем сценарии может установить переменные среды, необходимые Firefox или другим программам. –  Garrett Hall 30.11.2011, 16:42
  • 2
    Можно также использовать, отрицают, удар, внутренний для достижения того же самого. Этот вывод перенаправления привычки как nohup будет, но он может привыкнуть к висячей строке любые длительные задания, которые Вы запустили без подобных nohup, и Вы хотите сохранить их бегущий за Вами отпуск. –  Matthew Ife 30.11.2011, 20:38

Также Удостоверьтесь, что Вы выполняете Firefox как фоновое задание и не как передняя сторона, работающая, так как оболочка является родителем и ожидает Firefox, чтобы работать и выйти, прежде чем подсказка должна будет быть возвращена.

1
27.01.2020, 20:27

Большинство решений, которые вы найдете в сети, будут запускать скрипт firefox в подоболочке. После выхода из подоболочки вы получите управление обратно. Если скрипт firefox работает в фоновом режиме, вы не увидите его изменений и установленных переменных, а если его родительская оболочка (ваша настоящая оболочка) завершится, он, вероятно, все равно продолжит работу в фоновом режиме.

Основная причина этого в том, что оболочки, включая bash, имеют очень четкое различие между своими

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

Не существует простого способа изменить bash из неинтерактивного режима скрипта в интерактивный после выполнения скрипта (на этот раз стартового скрипта / оболочки firefox).

Это было бы возможно, но, насколько я знаю, ни одна оболочка не поддерживает это.

К счастью, есть много хитрых способов достичь вашей цели:

  1. Вы можете запустить неинтерактивный скрипт в качестве файла инициализации вашего bash. Итак: bash --bashrc /here/is/what/i/want.sh .
  2. Вы можете изменить /here/is/what/i/want.sh , чтобы повторно запустить собственный интерпретатор, но на этот раз уже в интерактивном режиме. Это можно сделать с помощью команды exec / bin / bash -i .Просто поместите это в конец вашего скрипта.
0
27.01.2020, 20:27

Теги

Похожие вопросы