背景:
安装搜狗输入法时候,发现etc/xdg/autostart路径下写desktop文件的方式,于是把所有方案整理一下
为了让 .sh
文件在用户登录时自动执行,可以采用如下多种方法。
1. 使用 .desktop
文件
- 创建一个
.desktop
文件,将Exec
字段指向.sh
文件的位置。 - 将这个
.desktop
文件放在/etc/xdg/autostart
或者用户的~/.config/autostart
目录下。 - 示例
.desktop
文件内容:
[Desktop Entry]
Name=nvbackground
Comment=Runs nvbackground.sh on startup
Exec=/path/to/nvbackground.sh
Type=Application
Hidden=true
NoDisplay=true
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Phase=Applications
StartupNotify=false
2. 使用 .bashrc
或 .bash_profile
- 在用户的主目录下创建一个
.bashrc
或.bash_profile
文件,并在其中添加执行.sh
文件的命令。 - 这样,每当用户登录时,这个
.sh
文件就会被执行。 - 示例
.bashrc
文件内容:
#!/bin/bash
# Run nvbackground.sh at login /path/to/nvbackground.sh
3. 使用 rc.local
- 在某些 Linux 发行版中,
/etc/rc.local
文件会在系统启动完成后执行。 - 你可以在
rc.local
文件中添加执行.sh
文件的命令。 - 示例
rc.local
文件内容:
#!/bin/bash
# Run nvbackground.sh at system startup /path/to/nvbackground.sh exit 0
- 注意:不是所有的发行版都使用
rc.local
,并且有些发行版已经弃用了rc.local
。例如,在使用 Systemd 的发行版中,你可能需要使用其他方法。
4. 使用 Systemd 用户服务
- 对于使用 Systemd 的系统,你可以创建一个 Systemd 服务单元文件,例如
.service
文件,并将其放置在/etc/systemd/system
或/usr/lib/systemd/user
目录下。 - 然后启用这个服务单元,这样它就会在系统启动或用户登录时自动运行。
- 示例
.service
文件内容:
[Unit]
Description=Run nvbackground.sh at login
After=multi-user.target
[Service]
Type=simple
ExecStart=/path/to/nvbackground.sh
[Install]
WantedBy=default.target
- 启用服务:
systemctl --user enable nvbackground.service
5. 使用 xinitrc
文件
- 对于使用 X Window 的系统,可以将
.sh
文件的路径添加到/etc/X11/xinit/xinitrc
文件中,这样它就会在图形界面启动时运行。 - 示例
xinitrc
文件内容:
#!/bin/sh
# Run nvbackground.sh at X startup /path/to/nvbackground.sh & exec $XINITRC
总结
.desktop
文件:适用于桌面环境,适合在用户登录时启动图形界面应用。.bashrc
或.bash_profile
:适用于命令行环境,适合在用户登录时启动命令行应用或脚本。rc.local
:适用于较旧的系统,在系统启动时执行,但可能不适用于所有发行版。- Systemd 用户服务:适用于使用 Systemd 的现代系统,适合在系统启动或用户登录时启动应用或服务。
xinitrc
文件:适用于使用 X Window 的系统,在图形界面启动时执行。