ubuntu中开机启动shell文件

本文解决shell文件开机启动,在ubuntu 14.04 64bit上测试成功。只要你的程序可以在终端运行,将其写入shell文件,再用此方法,即可开机启动。步骤如下:

写shell文件

小tip: 多终端执行的多条命令,也可以汇总在一个终端内。命令格式如下

1
2
3
4
5
#!/bin/bash
gnome-terminal -t "name1" -x bash -c "COMMAND11;COMMAND12;...;COMMAND1M; exec bash;"
gnome-terminal -t "name2" -x bash -c "COMMAND21;COMMAND22;...;COMMAND2J; exec bash;"
...
gnome-terminal -t "nameN" -x bash -c "COMMANDN1;COMMANDN2;...;COMMANDNK; exec bash;"

引号中的命令与平时终端下输入的无异,需要确保目录正确文件可执行,如果有等号,等号两侧不可以有空格。更多写法注意事项,请查询shell编程相关知识。

按照示例的格式,本文将ros命令写入文件,内容如下

1
2
3
4
5
#!/bin/bash
MAP=22
gnome-terminal -t "decoder" -x bash -c ". /home/lty/ROS_MASTER/cyberc3.sh;roslaunch ican can_node_lty.launch;exec bash;"
gnome-terminal -t "maploc" -x bash -c "cd /home/lty/catkin_ws/src/ltypositioning/scripts/;. /home/lty/ROS_MASTER/cyberc3.sh;rosrun ltypositioning map_localizationquick.py --mode=online '../configs/${MAP}-stereo.dcfg' --out_dir=../results;exec bash;"
gnome-terminal -t "ui_pos" -x bash -c "cd /home/lty/catkin_ws/src/ltypositioning/scripts/;. /home/lty/ROS_MASTER/cyberc3.sh;./posdialog.py;exec bash;"

手动运行shell文件

为了确保文件可以开机运行,应检验shell文件。假设此文件名为”startup.sh”,将其生成快捷方式,放在桌面上(此步仅便于查看)。终端中输入

1
/home/user_name/Desktop/startup.sh

即可观察现象。如果需要root权限,则应在终端中输入

1
sudo /home/user_name/Desktop/startup.sh

如果有问题,请检查拼写,目录,权限,和环境变量等。若没有问题,恭喜你,已掌握打包命令的技能,不用再逐句敲啦~

加入开机启动

此步仅适用于ubuntu系统。击Alt+F2,在搜索窗中输入”startup applications”(英文系统),或”启动应用程序”(中文系统)。添加内容
startup application illustration

其中,最重要的是Command空填入的内容,图中只显示了一部分。Command的内容示例如下。

1
gnome-terminal -t "terminal_name" -x bash -i -c "/home/user_name/Desktop/startup.sh; exec bash;"

细心将会发现此命令与shell文件中的命令很接近,区别为参数“-i”。在开机启动Command中,”-i”不可省略,否则会造成环境变量未加载引发的错误。

重启看看

enjoy~