Я создал скрипт bash, который запускает приложение. Поскольку я хотел, чтобы окно терминала закрывалось при запуске приложения, я использовал следующую строку:
firefox & 2> /dev/null; exit;
Он работает нормально, пока я запускаю скрипт из командной строки. Однако, если я запускаю его с рабочего стола, приложение закрывается так же, как и терминал. Может кто-нибудь объяснить, почему это так. Я использую Ubuntu 10.10.
Только используя:
nohup firefox
это работает. Но я все еще хотел бы объяснить, почему оригинальная версия не работает при запуске из панели запуска, если это возможно.
Решение состоит в том, чтобы просто использовать правильную форму в трубе:
firefox > /dev/null 2>&1
exit
Это работает как из терминала, так и из настольного запуска. Нет необходимости использовать nohup.
Попробуйте команду nohup:
nohup firefox & 2> /dev/null; exit;
nohup отключает запущенные задания от сеанса терминала, что предотвращает их закрытие при выходе.
Однако, если вы хотите запустить только Firefox, просто создайте для него ярлык, сценарий bash не требуется.
Далее в качестве объяснения: попробуйте запустить скрипт из терминала, оставьте окно Firefox открытым и закройте терминал, в котором вы запустили свой скрипт. Firefox закроется, так как он является дочерним процессом сеанса терминала, с которого он был запущен.
Решение, которое сработало для меня, заключается в том, чтобы поместить сценарий в сон на 1 секунду.
Вот минимальный пример скрипта, который я пытался запустить через панель запуска gnome:
#!/bin/bash
echo "test"
read e
nohup firefox & 2> /dev/null
exit
Это прекрасно работает при запуске из терминала, то есть:
Однако, при запуске этого из настольного запуска с:
[ 111]терминал отображает «test» и выключается после нажатия клавиши enter (firefox никогда не появляется, я предполагаю, что он уничтожен терминалом).
Однако следующие работы начались с пусковой установки:
#!/bin/bash
echo "test"
read e
nohup firefox & 2> /dev/null
sleep 1
exit
в этом случае Firefox запускается после нажатия Enter и остается в живых, когда терминал выключается после времени сна (или закрывается во время сна) ).