Bash:复制到主目录

Bash:复制到主目录

使用 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

相关内容