ubuntu通过.sh实现快捷启动——打开多个终端并自动执行多个程序

本文介绍了一个用于启动酒店机器人的bash脚本,该脚本通过gnome-terminal打开多个终端窗口并执行不同的ROS命令来初始化机器人系统。此外,还介绍了如何在脚本中加载.bashrc配置,并提供了一些关于gnome-terminal使用的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例

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的博客-优快云博客_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弃用_世纪末的魔术师的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值