使用 bash 脚本将文件复制到启动目录。当明确指定用户名 (ashok) 时,该脚本可以正常工作:
#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/ashok/.config/autostart
由于该脚本适用于多个用户,我尝试修改代码,以便不提供用户名,如下所示:
#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/$USER/.config/autostart
在后一种情况下,脚本显示错误:
cp: failed to access '/home/root/.config/autostart': Not a directory.
有人知道解决方法吗?
答案1
具有全局自动启动您必须/etc/xdg/autostart
通过以下命令将此文件复制到:
sudo cp /usr/share/applications/syncthing-start.desktop /etc/xdg/autostart/
然后重新启动。
答案2
因为 OP 想要执行该脚本的用户主页,所以他应该包括:
if [ "$EUID" -ne 0 ] ; then
echo "Sorry, but you are not root. Use sudo to run"
exit 1
fi
通过强制用户使用“sudo”,$USER_SUDO 应该可以实现 OP 想要实现的目标。
答案3
可以使用 $SUDO_USER 而不是 $USER 来解决此问题。完整的脚本如下:
#!/bin/sh
sudo cp /usr/share/applications/syncthing-start.desktop /home/$SUDO_USER/.config/autostart