从单个 bash 文件启动一组代码

从单个 bash 文件启动一组代码

我正在使用 Ubuntu 操作系统,我想制作一个单个 bash 文件如屏幕截图所示,它可以正确运行该代码。

请注意:

  • 我想在一个终端窗口中启动两个终端,并且第二个终端中的第二组代码应在第一个终端中的第一组代码启动 5 秒后启动。

  • 我需要第一组代码继续运行(启动第二个终端时不要停止)。*

代码:

cd catkin_ws
roscore
sleep 5
source devel/setup.bash
roslaunch hector _slam_launch tutorial.launch

截图:

1号航站楼 2 号航站楼

答案1

它曾经可以工作,并且现在仍然可以使用以下代码:

gnome-terminal --tab -e "sh -c 'cd catkin_ws ; roscore'" \
               --tab -e "sh -c 'sleep 5; source devel/setup.bash ; roslaunch hector _slam_launch tutorial.launch'"

问题是 Gnome 开发人员正在考虑放弃-e(“执行”)选项,转而使用 来终止选项--,之后提供命令。但是,他们忘记了这一变化使您只能提供单个命令。现在不再可能自动打开 Gnome 终端,其中包含多个包含不同进程的选项卡,例如每个选项卡都包含不同的 ssh 会话。

答案2

您可以使用命令创建终端选项卡gnome-terminal --tab。将命令放入文件中并bash作为--initfile参数传递给:

cd catkin_ws
tmpfile=$(mktemp /tmp/roslaunch-script.XXXXXX)
cat >$tmpfile <<EOF
sleep 5
source "$HOME"/.bashrc
source devel/setup.bash
roslaunch hector _slam_launch tutorial.launch
EOF
gnome-terminal --tab -- bash --init-file $tmpfile
roscore
rm $tmpfile

相关内容