Я создал простой сценарий bash под названием echo.sh. Что выводит строку. Я убедился, что это исполняемый файл. Затем я добавил его в программу «Автозагрузка приложений» через графический интерфейс. Однако, когда я перезагружаю свой компьютер, он, похоже, не выполняется, так как в терминале не появляется эхо.
Насколько я понимаю, сценарий не должен при выполнении автоматически открывать терминал, насколько я понимаю, поскольку STDOUT является файлом терминала. Однако сценарий работает нормально, если я сам запускаю его с терминала.
echo.sh
#!/bin/bash
echo "hello this is a bash script talking"
Делаем его исполняемым
chmod +x 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. Что работает без проблем. Значит, их проблема не связана с самой программой запускаемых приложений?
Сценарий, вероятно, работает, но STDOUT сценария (, где вывод направляется на ), связан с процессом в вашей ОС, который связан с запуском сценариев запуска, подобных этому, который не запускается в терминал, но является скрытым пользователем процессом, например, внутри ядра. Чтобы открыть терминал с этим сообщением, вам, вероятно, следует отредактировать его на
#!/bin/bash
gnome-terminal -e 'echo "hello this is a bash script talking"'
(Я сейчас не на Ubuntu, поэтому не могу проверить это, но суть в том, чтобы явно открыть терминал, где вы хотите, чтобы это сообщение отображалось в)
Вы можете проверить файл конфигурации файла автозапуска, который вы создали с помощью
cat ~/.config/autostart/NAME.desktop
Если вы хотите выполнить свой скрипт в терминале, вы должны добавить Terminal=true
в файл.
Вы также можете установить Hidden=false
в соответствии с тем, чего хотите достичь.