我有一些打开graphicsterminal(Gnometerminal,LXTerminal,Konsole等)的bash脚本。
不过,我不知道是否有一种惯用的方式来打开一个terminal? 像文件types的XDG标准? 否则,我很难用特定的方式来打开一个terminal,例如:
lxterminal -e "ls"
一个更简洁的方法是,我想有一个“openTerminal”函数,它将命令作为参数之一运行。
Debian用x-terminal-emulator
虚拟软件包来做这件事,在11.8.3提供终端仿真器的软件包中有描述
为X Window系统提供符合下列条件的终端仿真程序的软件包应在其“提供”控制字段中声明它们提供了虚拟软件包
x-terminal-emulator
。 他们还应该将自己注册为/usr/bin/x-terminal-emulator
替代品,优先级为20.该替代品应该为/usr/share/man/man1/x-terminal-emulator.1.gz
指向相应的手册页。要成为一个x终端模拟器,一个程序必须:
能够模拟DEC VT100终端或兼容的终端。
支持命令行选项-e命令,该命令创建一个新的终端窗口[106]并运行指定的命令,以xterm的方式将命令行的其余部分解释为直接传递给exec的命令。
- 支持命令行选项-T标题,它使用窗口标题标题创建一个新的终端窗口。
也就是说,这个政策描述了从90年代中期以来与xterm的最小兼容性。
这是有限的成功:
-e
选项兼容性很差,您提到的一些终端。 除了Debian(以及派生的发行版,如Ubuntu)之外,这种方法用处不大。
我记得之前回答过这个问题,但是暂时没有看到。 这里是我的Debian /测试列表,注意到每个具有40
优先级的软件包并不遵循这个策略:
$ sudo update-alternatives --config x-terminal-emulator Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/xterm-dev 60 auto mode 1 /usr/bin/evilvte 20 manual mode 2 /usr/bin/gnome-terminal.wrapper 40 manual mode 3 /usr/bin/koi8rxterm 20 manual mode 4 /usr/bin/konsole 40 manual mode 5 /usr/bin/lxterm 30 manual mode 6 /usr/bin/lxterminal 40 manual mode 7 /usr/bin/mate-terminal.wrapper 30 manual mode 8 /usr/bin/mlterm 20 manual mode 9 /usr/bin/mrxvt-full 10 manual mode 10 /usr/bin/pterm 20 manual mode 11 /usr/bin/stterm 15 manual mode 12 /usr/bin/terminology 40 manual mode 13 /usr/bin/urxvt 20 manual mode 14 /usr/bin/uxterm 20 manual mode 15 /usr/bin/xfce4-terminal.wrapper 40 manual mode 16 /usr/bin/xterm 20 manual mode 17 /usr/bin/xterm-dev 60 manual mode Press <enter> to keep the current choice[*], or type selection number:
(“xterm-dev”包当然是一个本地开发包,未发布)。