Я создал ссылку в Наутилусе в ~/bin
каталог для сценария удара, расположенного там. Затем я вырезал и вставил ссылку в ~/Desktop
каталог.
Когда я нажимаю на него, ничто не появляется на экране. Если я щелкаю правой кнопкой по ссылке и выбору Run
ничто не появляется также. Но я знаю, что это работает потому что conky
шоу несколько центральных процессоров, имеющих высокую загрузку. Нормальный % ЦП должен составить 5% к 8%, но это колеблется приблизительно 79%. Каждый экземпляр ссылки берет приблизительно 5% ЦП плюс systemd
берет 5% ЦП для журналирования. Температура обычно <50C, но в этом случае она колеблется вокруг 75C.
Я стрелял через journalctl
и найденный оскорблением / проблема цикличного выполнения:
$ journalctl -b-1 | grep 'TERM environment variable not set.' | wc
35763 357630 3325959
Я проверил гибкую ссылку, и это появляется хорошо:
lrwxrwxrwx 1 rick rick 30 Mar 26 10:14 Link to grub-display.sh -> /home/rick/bin/grub-display.sh*
Обратите внимание, что это - совершенно новый сценарий, который я просто отправил сегодня: Как отобразить меню личинки и опции без начальной загрузки?. В рамках сценария clear
команда используется, который связан с TERM
сообщения об ошибках в другом потоке здесь и здесь: Как я могу зафиксировать "переменную среды ТЕРМИНА не набор" предупреждение в затмении
Некоторые решения journalctl
сообщение об ошибке выше требует взгляда на:
$ env | grep TERM
TERM=xterm-256color
Я задаюсь вопросом, является ли это чем-то ~/.bashrc
когда Вы открываете терминал, но пропавшие без вести, когда настольный ярлык (ссылка) выполняет терминальную команду непосредственно?
grub-display.sh
выполнения сценария удара, превосходные из окна терминала.
Как я могу исправить эту неправильно функционирующую Настольную ссылку Наутилус, созданный для меня?
Проблемой является сценарий, полагается TERM
причем переменная окружения является установкой. Рабочему столу Единицы Ubuntu не инициализировали это, когда сценарии называют. При открытии терминала с Ctrl+Alt+T, переменная является установкой.
Для тестирования системы создают немного названного сценария test-term.sh
и заставьте его быть похожим на это:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
Создайте ссылку в Наутилусе к test-term.sh
и выполненный ссылка. Затем проверьте выходной файл:
$ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
Поскольку Вы видите переменную среды TERM
пробел когда команда env | grep TERM
используется. Также переменная $TERM
установлен на dumb
который не удовлетворяет основанной на цвете, поддерживаемой мышью команде dialog
очень хорошо.
Краткосрочное решение состояло в том, чтобы включать шаблонный код наверху этих двух рассматриваемых сценариев:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi
"Решение" не состоит в том, чтобы запустить программы вне их необходимой среды неоднократно, не проверяя их статус выхода. dialog
, whiptail
, и т.д. предназначены для терминалов, таким образом, они, конечно, требуют TERM
быть установленным. Таким образом, необходимо запустить те скрипты в терминале. То же самое произошло бы с Вашим "усовершенствованным" zenity, yad, и т.д., если выполнено без дисплея X11/Wayland.
В Вашем сценарии Вы проверяете вывод dialog
при перенаправлении вывода ошибок с нормальным выводом. Таким образом, когда диалоговое окно "разрушает и записи" и печатает сообщение об ошибке, Вы затем сравниваете вывод ошибок в Вашем если условия! Почему Вы сделали бы это?