在上位机中,我们通常会想让他开机自动运行一些脚本,比如我就是想让他开机运行监听话题信息的脚本,这时候就需要配置一下。经过我的多次尝试,发现网上常见的修改service,编写rc.local在我这里不起作用,经过多次尝试,发现下文这种方式成功运行。
1.编写好你的脚本,并赋予可执行权限
我这里是boot.sh,放在了home/user/下面,编写时需要注意source路径,经过测试source ~/.bashrc在这里并不起作用,你需要在开头把所有用到的工作空间路径都source一下,要不然会提示找不到。
如下是我编写的boot.sh
#!/bin/bash
# Source the bashrc and ROS workspace setup
source /opt/ros/noetic/setup.bash//在这里放你需要source的路径
source /home/user/catkin_ws_1/devel/setup.bash #在这里放你需要source的路径
# Open a new gnome-terminal tab and start roscore
gnome-terminal --tab --title="ros" -- bash -c "roscore; exec bash" & #前面的ros是随便起的名,后面的roscore代表终端指令,exec bash代表运行后不杀掉终端
sleep 2s #代表等待2s
# Open a new gnome-terminal tab and run the rosserial_python node
gnome-terminal --tab --title="esp" -- bash -c "rosrun rosserial_python serial_node.py tcp; exec bash" &
sleep 1s
# Open a new gnome-terminal tab and run the test_pkg listener node
gnome-terminal --tab --title="listener" -- bash -c " rosrun test_pkg sub; exec bash" &
给出一个测试shell脚本,命名为test.sh
#! /bin/bash
echo "自启动成功"
sleep 1s
#cd /home/user/
#gnome-terminal -x bash -c "xxxxxxx;xxxxxxxxxxx;exrc bash" //这里对应自己要开启的指令
赋予可执行权限
sudo chmod 777 test.sh
2.配置开机自启动
这里使用 gnome-session-properties
这是 Ubuntu 自带的命令,可以在用户登录时自动执行某个程序
在终端输入:
gnome-session-properties
点击添加,选中一个已经编写好的脚本,添加即可
如下图
注意文件路径,文件路径可以打开终端用pwd指令获得,重新开机即可看到脚本指令自动执行
3.设置自动登录
由于此种方式是在用户登录之后才会运行,因此,还需要设置自动登录才能真正的开机自启动,无需人为干预。
在终端输入
sudo gedit /etc/gdm3/custom.conf
人为去掉选中的这两行的注释即可
把前面的#去掉,就大功告成了。