Linux “如何使用命令”;at";在shell中调用ubuntu中的zenity

Linux “如何使用命令”;at";在shell中调用ubuntu中的zenity,linux,shell,ubuntu,zenity,Linux,Shell,Ubuntu,Zenity,我试图编写一个shell脚本来提醒用户。我想在特定时间显示对话框 我使用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 #!bin/bash 路径=/bin:/sbin:/usr/bin:/

我试图编写一个shell脚本来提醒用户。我想在特定时间显示对话框

我使用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
#!bin/bash
路径=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
导出路径

现在由于
at
执行的命令不是在同一个shell中执行的,也不是在同一个环境中执行的(您已经有了图形显示),因此您还需要指定要使用的显示,例如,在使用zenity时设置
display
环境变量:

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

此外,如果您通过编写zenity的绝对路径来运行zenity,请确保它确实存在。对我来说,在Ubuntu 14.04上,zenity是在
/usr/bin/zenity
下安装的,所以以你的例子来说,它不起作用。

(a)你的shebang行格式不正确:应该是
#/bin/bash
;(b) 直接运行
zenity
命令时会发生什么情况?(
/bin
对于
zenity
来说是一个不寻常的位置-而且,为什么它不在
$PATH
?)(a)但我只写了“#”!bin/bash'它工作正常(b)我命令zenity--info--text=“hello word”
它将直接弹出一个消息框。如果您尝试直接使用这个shebang运行脚本(假设您已使其可执行),它将不会运行。如果显式调用
bash
,并将脚本作为参数传递给它,它将正常工作(第1行将只是另一条注释)。至于实际问题:在我看来,@abannerth的答案是正确的解决方案。