【发布时间】:2015-01-11 05:23:13
【问题描述】:
我正在尝试使用 Debian 7.6 x86_64 和 GNOME 3.4.2 在 Kali Linux 中编写一个 shell 脚本,每次系统启动时都会更改背景桌面墙纸,从目录中获取文件并随机选择它们间隔,类似于服务或守护程序。我不想每次启动时都必须通过终端手动执行它,这就是原因,因为我打开了一个与该站点中的其他问题非常相似但不一样的问题。我所做的是将下一行放在 rc.local 中 exit 0 行之前:sh /etc/my_scripts/wallpaper,壁纸脚本内容是我写下的代码。 但它没有什么。我认为问题在于操作系统无法识别用户有效和真实的 UID 和 GID,因为我没有通过终端执行脚本并且它无法访问环境变量,因此它没有不知道是谁创建了这个过程,而不是更改壁纸。我使用函数 seteuid()、setuid()、setegid()、setgid() 和 system() 函数编写了一个 C 程序,该函数运行我在 rc.local 中放置的同一行,但它也不起作用。我也尝试对脚本进行 LSBize 并将其复制到 /etc/init.d 目录中,并使用 update-rc.d 命令和 desktop-nova 或 cortina 等程序创建指向 /etc/rcX.d 目录的符号链接那也行不通。 那么,我能做些什么来达到我的目标呢?感谢和抱歉我的英文和广泛的文字。
#!/bin/sh
wallpaper_changer()
{
wallpapers=/home/linuxsoldier/Pictures/Favorites2/*
while true
do
wallpaper=`ls $wallpapers | shuf -n1 `
gsettings set org.gnome.desktop.background picture-uri file://"$wallpaper"
sleep 15m
done
}
wallpaper_changer & #To run it in background.
【问题讨论】: