【问题标题】:How to use command "at" in shell to call zenity in ubuntu如何在 shell 中使用命令“at”在 ubuntu 中调用 zenity
【发布时间】:2014-06-13 14:02:13
【问题描述】:

我正在尝试编写一个 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

但它没有显示任何东西

请帮帮我。

【问题讨论】:

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

标签: linux shell ubuntu zenity


【解决方案1】:

由于at 执行的命令不是在同一个shell 中执行的,并且在同一个环境中(您已经有可用的图形显示),您还需要指定要使用的显示,例如通过在使用zenity时设置DISPLAY环境变量:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2013-04-02
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多