问题描述
当我启动我的Ubuntu机器时,我需要运行三个脚本,他们开始在我的开发环境中使用的服务。
为此,我手动打开三个终端并输入命令。
有什么办法可以创建一个脚本来打开三个终端并在其中执行一个命令? (每个命令应该在一个单独的终端窗口中,以便我可以看到他们的输出)。
最佳解决思路
gnome-terminal -e command
要么
xterm -e command
要么
konsole -e command
非常好
terminal -e command
当命令退出时使终端停留:
在konsole中有一个--noclose
标志。
在xterm中,有一个-hold
标志。
在gnome-terminal
中,转到编辑 – >配置文件首选项 – >标题。单击命令选项卡。选择标记为何时命令退出的drop-down菜单中的端子。你应该为它创建一个新的配置文件,然后执行
gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
次佳解决思路
使用Alternatives系统代替hard-coding gnome-terminal
,konsole
等。执行默认终端仿真器的程序是:
x-terminal-emulator
在我的系统中,每次执行此命令时都会打开一个Konsole的新实例。
幸运的是,终端似乎支持执行命令的-e
选项(我对konsole
和gnome-terminal
进行了验证)。该命令之后的参数被传递给被调用的命令。 Bash拒绝在我的终端中保持打开状态,需要额外的脚本来获得终端:
#!/bin/sh
"$@"
exec "$SHELL"
如果您已将以前的脚本保存为/home/user/hacky
并将其设置为可执行文件,则可以使用以下脚本运行脚本:
x-terminal-emulator -e /home/user/hacky your-script optional arguments here
完整路径是必需的,并且/home/user/hacky
必须是可执行的。
我之前在一个新的终端窗口中运行脚本的尝试可以在revision #2中找到,在我意识到参数可以传递给x-terminal-emulator
之前。
第三种解决思路
很简单 –
#!/bin/bash
/etc/init.d/ccpd status
这对于不需要在终端中显示任何内容的其他命令就足够了。但是这里必须看到显示的状态。所以,它需要在终端窗口中运行
#!/bin/bash
gnome-terminal -e "/etc/init.d/ccpd status" --window-with-profile=NAMEOFTHEPROFILE
The other post将[]
设为占位符
此处”NAMEOFTHEPROFILE”将被替换为“当命令退出时保留终端”的配置文件的名称。