启动 gnome-terminal 并自动运行特定进程(roscore)

启动 gnome-terminal 并自动运行特定进程(roscore)

我正在打字

$ roscore

并且它启动成功。

$ run_roscore.sh也成功了。run_roscore.sh:

#!/bin/bash

/opt/ros/indigo/bin/roscore

exec $SHELL

但是我已经添加了 cairo-dock 的快捷方式(或通过 alacarte 菜单),当我点击时,终端屏幕是出现并退出roscore. 且系统中没有正在运行的进程。

Cairo-Dock 的快捷方式的命令框;

gnome-terminal -e run_roscore.sh

我以前尝试过:

run_roscore.sh
bash -c "/usr/bin/run_roscore.sh"
gnome-terminal -x roscore
gnome-terminal -e /usr/bin/run_roscore.sh

但终端总是出现并退出。我刚刚禁用了自动退出,现在,我将其写入gnome-terminal -x roscore命令框(在 cairo-dock 或菜单项或 Alt + F2 框上)。它显示: Failed to execute child process "roscore" (No such file or directory)

编辑:用户 luator 建议tmux。但它不适用于 tmux。

使用gnome-terminal -e tmux命令,终端屏幕打开并成功运行 tmux。我在 tmux 中输入了 roscore,它起作用了。我在打开的 gnome-terminal 中输入tmux -c lstmux -c roscore,它起作用了。但在快捷方式中(或 Alt + F2 运行命令),gnome-terminal -e 'tmux -c roscore'不起作用。

我想roscore在后台处理,或者如果没有终端屏幕就无法处理,我想启动终端并roscore在单击快捷方式(菜单快捷方式或 cairo-dock 快捷方式)时自动调用。那么创建快捷方式的解决方案是什么?

答案1

您可以使用终端多路复用器,例如屏幕或者tmux在后台运行roscore(在终端中启动屏幕或 tmux,运行 roscore,分离)。

要获得可点击的快捷方式,您可以使用以下命令创建启动器:

tmux new -ds ros roscore

这将启动一个名为的新 tmux 会话罗斯(由 指定的名称-s),在此会话中运行命令roscore并自动与其分离(-d)。

要重新连接到 tmux 会话(例如终止 roscore),请在终端中使用以下命令:

tmux attach -t ros

screen(如果您更喜欢它,那么同样的做法也是可行的tmux,只需在手册中稍微挖掘一下)

答案2

好的,我找到了解决方案当我尝试时roscd。我输入了;

$roscd beginner_tutorials

并说:

roscd: No such package/stack 'beginner_tutorials'

然后我输入;

$source /opt/ros/indigo/setup.bash

并且roscd有效。

此命令已在我的 .bashrc 文件中。我还将其添加到了脚本的顶部:

#!/bin/bash
source /opt/ros/indigo/setup.bash
bash -c "/opt/ros/indigo/bin/roscore"

exec $SHELL

在 cairo-dock 的命令框中,只需:

run_roscore.sh

快捷方式的“在终端中运行“选项已选中。一切正常。

相关内容