我想使用“./application_name”启动多个应用程序,并且每个应用程序都在单独的终端中,我如何在bash脚本中执行此操作。
答案 0 :(得分:2)
我不确定我理解你的要求,但这可能就是你所需要的:
x-terminal-emulator -e "./application_name [arguments]" &
这将在后台启动一个新的终端模拟器,它将运行给定的命令而不是shell。
如果您的系统没有x-terminal-emulator
别名,请替换实际终端仿真程序的名称,例如xterm
或gnome-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,因为您有两个引用级别,但可以完成。