我正在创建一个脚本来管理我的图标,并且我正在使用该命令gvfs-set-attribute
来执行此操作。该脚本在我使用终端运行时运行良好,但在我使用cron
. 这是我的问题的简化版本:
#!/bin/bash
PATH=/home/myUser/bin:/home/myUser/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/myUser/.local/share/gvfs-metadata
gvfs-set-attribute -t string /home/myUser/myFolder metadata::custom-icon file:///home/myUser/myImage.png
我已经使用crontab -e
并设置了我的脚本以每分钟运行一次* * * * * /home/myUser/script.bash
。问题是,当我使用cron
.
我已经按照其他问题中的PATH
描述在我的脚本上编写whereis gvfs-set-attribute
了,命令的输出是:
gvfs-set-attribute: /usr/bin/gvfs-set-attribute /usr/share/man/man1/gvfs-set-attribute.1.gz
所以,我假设这里没有任何问题PATH
。我还尝试使用绝对路径直接运行我的脚本:/usr/bin/gvfs-set-attribute
. 但是这些事情中的任何一个都有效......有没有人知道发生了什么以及为什么我不能使用该gvfs-set-attribute
命令cron
?
cron
作业不在 X 窗口系统下运行,并且通常不访问 GUI 对象。但是,您可以作弊。
在终端中,在 GUI 下运行:
并且,在
cron
工作开始时:阅读
man xhost
。尝试将此行添加到您的脚本中(显然是在调用之前
gvfs-set-attribute
):它
DBUS_SESSION_BUS_ADDRESS
从您现有的 gnome-session 中获取环境变量。不过,这有两个假设:如果有多个 gnome-sessions(即,一个用于多个用户),您可以通过添加
-u
选项来更改此行以适用于特定用户pgrep
。例如:如果您不使用 gnome - 那么我认为这将通过替换
gnome-session
另一个值来与其他桌面环境一起使用 - 例如lxsession
用于 LXDE。