ubuntu通过.sh实现快捷启动 | 您所在的位置:网站首页 › ubuntu远程连接ssh打开多个终端 › ubuntu通过.sh实现快捷启动 |
实例
touch hotel_robot.sh
gedit ./hotel_robot.sh
hotel_robot.sh中内容如下: #!/bin/bash # --- for every Terminal-tab source ~/.bashrc # load ~/.bashrc setup source /mnt/hgfs/linux_share/ros_project/home_robot_ws/devel/setup.bash # ros workspace { gnome-terminal --tab "XXD_ros" -- bash -c "roscore;exec bash" }& sleep 2s { gnome-terminal --tab "XXD_demo" -- bash -c "roslaunch home_robot_moveit_config demo.launch;exec bash" }& sleep 4s { gnome-terminal --tab "XXD_fk" -- bash -c "rosrun hr_task_planning plan_arm_fk_node;exec bash" # gnome-terminal --tab "XXD_ros" -- bash -c 'export RUN_AFTER_BASHRC="rosrun hr_task_planning plan_arm_fk_node;exec bash"' }& sleep 2s { gnome-terminal --tab "XXD_imu" -- bash -c "rostopic echo /joint_states;exec bash" }赋予执行权限 sudo chmod 777 *运行 ./hotel_robot.sh gnome-terminal使用介绍基础用法见: gnome-terminal使用_ZONGXP的博客-CSDN博客_gnome-terminal 废弃命令提示: -x和-e已经被弃用了,所以取而代之的是 - -符号,还有就是 bach -c这条命令,因为是在新启动的终端里执行bash -c,即启动子shell,所以总体的代码就应该如下: gnome-terminal --tab -- bash -c "_bash_cmd;exec bash"这里的&符号是&切换到后台运行,防止阻塞当前进程的,让进程异步执行。由此可知shell也是多进程模型,而js脚本是单进程模型。 示例: gnome-terminal --tab -- bash -c "ifconfig;exec bash" gnome-terminal --tab -- bash -c "ls;exec bash"使用.bashrc中的配置 1. 需要注意的是,gnome-terminal --tab -- bash -c "_bash_cmd;exec bash" 执行的命令,是在调用 .bashrc 之前的,所有 .bashrc 的所有配置都无效,如果需要用到.bashrc里面的内容,有个变通的办法,在.bashrc最后加上一句 --------------------.bashrc-------------------- 其他内容 #最后加上这句 evel "$RUN_AFTER_BASHRC" -----------------------------------------------然后在写命令的时候,修改RUN_AFTER_BASHRC这个变量,就可以实现让.bashrc调用这个命令 $ gnome-terminal -- bash -c 'export RUN_AFTER_BASHRC="_bash_cmd_"; exec bash'这样虽然可以先加载.bashrc配置,再执行_bas_cmd_指令,但由于.bashrc的加载默认是在后台运行的,_bas_cmd_也会在后台运行,打印输出无法查看。 2. 如在.sh文件中,启动多个终端和程序,可以显式加载.bashrc配置 #!/bin/bash # --- for every Terminal-tab source ~/.bashrc # load ~/.bashrc setup # --- other _bash_cmd 参考在ubuntu/linux下利用qt启动终端并执行命令/执行外部程序或者脚本/gnome-termianl使用,gnome-terminal -x弃用_世纪末的魔术师的博客-CSDN博客 |
CopyRight 2018-2019 实验室设备网 版权所有 |