使用shell脚本(bash)在单独的终端中运行命令

时间:2012-08-27 12:31:58

标签: bash unix

我想使用“./application_name”启动多个应用程序,并且每个应用程序都在单独的终端中,我如何在bash脚本中执行此操作。

1 个答案:

答案 0 :(得分:2)

我不确定我理解你的要求,但这可能就是你所需要的:

x-terminal-emulator -e "./application_name [arguments]" &

这将在后台启动一个新的终端模拟器,它将运行给定的命令而不是shell。

如果您的系统没有x-terminal-emulator别名,请替换实际终端仿真程序的名称,例如xtermgnome-terminal。他们(几乎)都支持-e选项。

当然这需要你的bash脚本首先在X11会话中运行(而不是从cron作业或类似的东西),否则新的终端模拟器可以没有$DISPLAY出现。

编辑-e的参数是否在shell下执行或直接看起来取决于使用的是哪个终端仿真器。例如,xterm在shell下运行它,但gnome-terminal没有。这样做的结果是您可能会或可能无法提供cd foobar; ./something & wait之类的复合shell命令作为-e的参数。作为那些在shell下运行命令的终端模拟器的解决方法,您可以使用-e 'sh -c "actual command"'。正确引用特殊字符会获得gets complicated,因为您有两个引用级别,但可以完成。