Skip to main content

Ubuntu-18.04 开机自启动脚本

gnome-session-properties

Ubuntu 启动应用程序首选项可以在系统启动时自动执行设置好的指令

可以通过此方法实现开机自动执行脚本,达到自启动的效果

gnome-terminal

gnome-terminalUbuntu 系统默认安装的终端模拟器,将shell可视化,并拓展其功能

命令行中通过 gnome-terminal 可以新建一个终端,可以通过其执行脚本文件

bash

bash 可以用来执行命令或者是可执行文件

  • 执行可执行文件可以直接 bash -c "cmd strig"
  • 执行命令则可以用 bash -c "cmd strig"
    • "cmd strig" 中是 shell 命令字符串,可以用 ; 分开多条指令
    • "cmd strig" 中也可以是可执行文件,但要使用文件的绝对路径,并且文件要有相应的权限

例如可以使用

bash -c "cd ~;chmod 777 /home/user/xxx.sh;/home/user/xxx.sh;read"

来执行 /home/user/xxx.sh 文件,用 ; 分开了多条命令,最后使用 read,当按下回车键时终端才会退出

实现脚本自启动

终端输入 gnome-session-properties 打开启动应用程序首选项,新建一个自启动程序

Command 中填入下列指令,.sh 文件替换为相应的路径

gnome-terminal -- bash -c 'chmod 777 xxx.sh;xxx.sh;read'

保存退出,重启即生效

conda command not found

设置自启动脚本时,如果脚本中运行的程序需要使用到 Anaconda 环境的话,直接启动脚本很可能会出现 conda command not found 的问题

安装 conda 的时候会在 ~/.bashrc 中写入类似这样的内容

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/USERNAME/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/USERNAME/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/USERNAME/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/USERNAME/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<

我尝试在脚本最前面加上 source ~/.bashrc,再次尝试时仍然找不到 conda 的指令,于是我尝试将自己 ~/.bashrc 中的相应内容直接复制到脚本中执行,脚本成功自启动

参考