Linux как автоматически запустить видимый терминал с файлом скрипта при запуске - PullRequest
0 голосов
/ 11 апреля 2020

Я видел много способов запуска скрипта, таких как помещение его в profile.D, r c .local или создание файла автозапуска, но ни один из них не запускает файл в видимом окне, если он вообще существует. Мне нужно, чтобы это было в видимом окне в Ubuntu. Мне нужно это сделать, потому что я использую несколько эмуляторов для потоковой передачи на разные сервисы, и мне не нужно запускать скрипт для каждого из них вручную.

Я использую визуальный блок для эмулятора. Файл sh находится на съемном диске, потому что это внешний файл. Мне также нужно, чтобы он работал как sudo.

Редактировать: Мне не нужно, чтобы он запускался при запуске. Мне просто нужно запустить скрипт. Я, вероятно, могу просто очень долго спать для загрузки Graphi c.

Редактировать 2: Итак, я создал сервис, который запустил файл sh в / usr / bin /, который должен был создать gnome- окно терминала, в котором выполнялся мой скрипт. Это бежало, однако Это не создавало видимое окно по некоторой причине. Затем я попытался указать дисплей, который вызвал у гнома волнение. Dbus не запускался правильно. В другом вопросе говорилось, что gnome не будет работать из-за того, как он был спроектирован, и было указано, что вместо этого он использует konsole. Konsole также заявила, что не может подключиться к дисплею, что приводит к ошибке QXcbConnection. Konsole не имеет возможности указать отображение. Я не знаю, что еще попробовать

Редактировать 3: Итак, я сделал это в комментарии. И сервис работает. Однако это работает только после того, как я запускаю файл, который служба запускает в usr / bin вручную после каждого перезапуска. Важные части файла:

 #!/bin/bash
sleep 60
ufw disable
ssh nateguana@$(hostname) -X
xhost +
*launch Gnome**only works after file ran manually*

Я также попытался экспортировать DISPLAY и изменить пользователей с помощью su. Я не пробовал импортировать SSHD, как сказал другой вопрос, поскольку я думаю, что это только для нелокальных подключений. Я также перепробовал все возможные варианты команд. Ошибки Xhost, указывающие, что он не может открыть дисплей "".

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете использовать gnome-terminal -e <command> для создания нового терминала bash, который запускает команду.

Вы можете использовать что-то вроде

gnome-terminal -e /path/to/bashfile

Имейте в виду, это приведет к терминал после выполнения bash scipt завершен.

Чтобы избежать этого, в новой строке добавьте $SHELL в конец вашего bash сценария.

PS: аргумент -e устарела и может быть удалена в более поздних версиях

...