Открытие файла .desktop вне рабочего стола немедленно приводит к выходу из системы

Открытие файла .desktop вне рабочего стола немедленно приводит к выходу из системы

Это мой первый вопрос на Ask Ubuntu, поэтому я хотел бы заранее поблагодарить вас за терпение.

Моя ситуация такова: у меня есть *.desktopфайл (который я написал), который должен выполнять скрипт оболочки. Моим первоначальным намерением было поместить этот файл ~/.config/autostartтак, чтобы он запускался автоматически при запуске; однако это заставляет Ubuntu мигать рабочий стол на долю секунды, а затем выводить меня из системы. Я могу дважды щелкнуть файл на рабочем столе, и он запустит скрипт, как и положено. Если я вытащу файл *.desktopиз ~/Desktopкаталога и поместлю его буквально в любое другое место, двойной щелчок по нему в Nautilus также приведет к немедленному выходу из системы.

Файл *.desktopнастроен на выполнение скрипта оболочки, который начинается bashв gnome-terminal. Причины, по которым я это делаю, не обязательно важны, поэтому, пожалуйста, предположите, что мне это нужно. Если я добавляю sleep 10в начало первого скрипта оболочки, я выхожу из системы через 10 секунд после запуска файла *.desktop, независимо от того, как он запущен. Похоже, проблема в том, что новое gnome-terminalокно запускается из второго скрипта, но я не понимаю, как и почему это происходит. Запись на рабочем столе:

[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application

Инициализация системы:

#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture"           # Give focus to new terminal window
kill -9 $PPID                     # Close this terminal

ЗапуститьAutocap.sh:

#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py

Предполагается (и это успешно происходит, если запущено с рабочего стола), что это запустит полноэкранное gnome-terminalокно bashи запустит module.pyпрограмму " " в этом сеансе bash. Это также закроет первое gnome-terminalзапущенное окно и отсоединит дочерний процесс.

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

решение1

Хотя у меня есть свои теории, я боюсь заявлять, что я точно знаю (или хотя бы отдаленно), как или почему это работает. Я бы предположил, что это как-то связано с тем, как лаунчер *.desktopвыполняет свою цель. Возможно, я пытался убить окно gnome-terminal после того, как оно уже было закрыто в конце выполнения скрипта, и в итоге убил свой сеанс? Может быть, наоборот? Я не утверждаю, что знаю, но я бы пригласил любого, кто знает,пожалуйста, ответьте на этот вопрос с вашим объяснениемчтобы другие могли извлечь урок из моей ошибки.

Удаление линии kill -9 $PPIDрешило проблему

Если скрипт выполняется из *.desktopлаунчера, то начальное gnome-terminalокно закроется, оставив второе. Если скрипт выполняется из командной строки (например, $ bash InitSystem), то начальное gnome-terminalокно не закрывается.

Связанный контент