Вы также можете создать скрипт:
#!/usr/bin/env bash
runuser -l [yourusername] -c 'DISPLAY=:0 notify-send "hey there user"'
Затем запустите его с помощью sudo
. Однако, поскольку crontab -e
выполняет все команды с пользователем, который его создал, при вызове без sudo
:
#!/usr/bin/env bash
DISPLAY=:0 notify-send "hey there user"
По крайней мере, это для меня. Кажется, что все зависит от конфигурации среды.
Из документов zsh
5.5.1 дляCONDITIONAL EXPRESSIONS
For compatibility, if there is a single argument that is not syntactically significant, typically a variable, the condition is treated as a test for whether the expression expands as a string of non-zero length. In other words, [[ $var ]] is the same as [[ -n $var ]]. It is recommended that the second, explicit, form be used where possible.
С исходным деревом вокруг,
% grep -rl 'if there is a single argument'.
./Doc/Zsh/cond.yo
% git blame./Doc/Zsh/cond.yo | grep 'if there is a single argument'
d082827c83 (Jun T 2014-05-18 22:03:35 +0900 198) For compat...
Проверка git log
показывает, что изменение кода произошло немного раньше, чем документация:
commit 9d47e8398d299e53ffe4e7ddf3731d2fedae9948
...
Date: Tue May 13 08:16:50 2014 -0700
32609: [[ $var ]] behaves as [[ -n $var ]] for bash/ksh compatibility
Отображение файла ChangeLog
в git tag
мне непонятно, но кажется zsh
5.0.6 (Чт 28 авг 19 :07 :04 2014 +0100 )— первая версия с этим изменением.
Более подробно показано, что делает код.
Лично я в данном случае предпочел бы [[ -n $ZSH_VERSION ]]
, потому что он показывает, что он проверяет не -пустое значение переменной.
Но в моих сценариях часто используются переменные, предназначенные для логического значения, и я называю их соответственно, например is_logged_in
или running_in_background
. Если такие переменные не установлены в моих скриптах, это false
. И в таких случаях я предпочитаю использовать [[ running_in_background ]]
просто потому, что без части -n
это читается лучше,как обычное предложение:
if [[ running_in_background ]] ; then
echo "something" | logger -t myprog
fi
Но ИМО это всего лишь дело вкуса, и как таковое не должно быть отредактировано :это ваш код.