Сценарий bash не запускается при запуске

Я создал простой сценарий bash под названием echo.sh. Что выводит строку. Я убедился, что это исполняемый файл. Затем я добавил его в программу «Автозагрузка приложений» через графический интерфейс. Однако, когда я перезагружаю свой компьютер, он, похоже, не выполняется, так как в терминале не появляется эхо.

Насколько я понимаю, сценарий не должен при выполнении автоматически открывать терминал, насколько я понимаю, поскольку STDOUT является файлом терминала. Однако сценарий работает нормально, если я сам запускаю его с терминала.

echo.sh

#!/bin/bash

echo "hello this is a bash script talking"

Делаем его исполняемым

chmod +x echo.sh

Добавление в «запускаемые приложения с правильным каталогом для файла» /home/sam/Documents/bash/echo.sh

Результат

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

просто отметим, что все мои другие сценарии bash работают, например, мой сценарий "cleanup.sh", который также находится в программе "запускаемых приложений".

Попытки исправить

Я попытался перенаправить STDOUT в файл терминала / dev / tty. Однако это, похоже, не работает.

#!/bin/bash

echo "hello this is a bash script talking" >/dev/tty

Я также протестировал сценарий bash с помощью простой команды rm, просто чтобы проверить, была ли проблема только с командой echo. Однако при добавлении для запуска приложений или.bashrc, он не удаляет test.txt в том же каталоге, что и скрипт. Однако работает, когда я выполняю вручную с терминала.

#!/bin/bash

rm ./test.txt

Я также тестировал саму программу запускаемых приложений, просто открыв Firefox с помощью команды Firefox. Что работает без проблем. Значит, их проблема не связана с самой программой запускаемых приложений?

0
11.07.2017, 16:35
2 ответа

Сценарий, вероятно, работает, но STDOUT сценария (, где вывод направляется на ), связан с процессом в вашей ОС, который связан с запуском сценариев запуска, подобных этому, который не запускается в терминал, но является скрытым пользователем процессом, например, внутри ядра. Чтобы открыть терминал с этим сообщением, вам, вероятно, следует отредактировать его на

#!/bin/bash
gnome-terminal -e 'echo "hello this is a bash script talking"'

(Я сейчас не на Ubuntu, поэтому не могу проверить это, но суть в том, чтобы явно открыть терминал, где вы хотите, чтобы это сообщение отображалось в)

0
28.01.2020, 04:44

Вы можете проверить файл конфигурации файла автозапуска, который вы создали с помощью

cat ~/.config/autostart/NAME.desktop

Если вы хотите выполнить свой скрипт в терминале, вы должны добавить Terminal=trueв файл.
Вы также можете установить Hidden=falseв соответствии с тем, чего хотите достичь.

0
28.01.2020, 04:44

Теги

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