Как использовать команду «at» в оболочке для вызова zenity в ubuntu

#linux #shell #ubuntu #zenity

#linux #оболочка #ubuntu #zenity

Вопрос:

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

Я использую zenity для отображения диалогового сообщения

Вот мой сценарий

 #!bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
at now <<EOF
/bin/zenity --info --text="hello word"
EOF
  

Но это ничего не показывает

Пожалуйста, помогите мне.

Комментарии:

1. (а) Ваша строка shebang искажена: должна быть #!/bin/bash ; (б) что происходит, когда вы запускаете zenity команду напрямую? ( /bin это необычное место для zenity — кроме того, почему бы ему не быть в $PATH ?).

2. (a) но я только написал ‘#!bin/bash’, все работает нормально (b) Я командую <pre>zenity —info —text=»привет, слово»<code>, он сразу отобразит окно сообщения.

3. Если вы попытаетесь запустить свой скрипт напрямую с помощью этого shebang (при условии, что вы сделали его исполняемым), он не будет запущен. Если вы bash явно вызовете и передадите ему скрипт в качестве аргумента, он будет работать нормально (тогда 1-я строка будет просто еще одним комментарием). Что касается актуальной проблемы: мне кажется, что ответ @abannerth является правильным решением.

Ответ №1:

Поскольку команда at , выполняемая с помощью, выполняется не в той же оболочке и в той же среде (где у вас уже есть графический дисплей), вам также необходимо указать, какой дисплей использовать, например, установив переменную DISPLAY среды при использовании zenity:

 DISPLAY=:0.0 zenity --info --text="hello world"
  

Кроме того, если вы запускаете zenity, записав его абсолютный путь, убедитесь, что он действительно есть. Для меня в Ubuntu 14.04 установлен /usr/bin/zenity zenity, поэтому с вашим примером это не сработает.