2012-08-27 176 views

回答

2

我不知道我明白你问什么,但是这可能是你所需要的:

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

这将在后台启动一个新的终端仿真器将运行在给定的命令,而不是如地狱。

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

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

编辑-e的参数是否在shell或直接执行似乎取决于使用哪个终端仿真程序。例如,xterm在外壳下运行它,但gnome-terminal不会。其结果是,您可能或不可能提供复合shell命令,如cd foobar; ./something & wait作为-e的参数。作为不需要在shell下运行命令的终端模拟器的解决方法,可以使用-e 'sh -c "actual command"'。适当引用特殊字符得到gets complicated,因为您有两个级别的引用,但可以完成。

+0

这正是我想要的,但是如果我不想在后台运行它们并且希望终端保持打开状态,该怎么办。 – rajat

+0

它们在后台运行:注意命令行末尾的“&”。 (如果他们没有在后台运行,那么它会等待一个完成,然后开始下一个,我认为这不是你想要的)。至于你的第二个问题,最简单的方法是添加';睡眠999999999'到命令的末尾(在引号内)。那只会在原始命令退出后运行一次永久性睡眠。 – Celada

+0

Ohk,很酷。谢谢 ! – rajat

相关问题