ubuntu-18.04 设置开机启动脚本,环境变量执行顺序

具体参见http://www.r9it.com/20180613/ubuntu-18.04-auto-start.html

这样操作玩一般就没有问题了,/etc/rc.local可以被执行,但是该脚本在执行时不能读取通过/etc/profile或者~/.bashrc等方式配置的环境变量,说明systemctl早于/etc/profile或者~/.bashrc等脚本的执行;

比如楼主实在开机启动nexus时发现的这个问题:

通过

systemctl status rc.local

发现nexus启动脚本被执行,但是报错了。原因是没有没找到JDK,所以在/etc/rc.local中增加了如下修改。

[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_111     ###增加这句话 Environment可以有多个
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Alias=rc-local.service

 

另外说明/lib/systemd/system中rc.local.service是rc-local.service的软连接

-rw-r--r-- 1 root root  728 3月  11 14:40 rc-local.service
lrwxrwxrwx 1 root root   16 11月 27 06:34 rc.local.service -> rc-local.service

所以rc.local和rc-local是一回事。

你可能感兴趣的:(UBUNTU,systemctl,profile)