-hold
选件于1999年被添加到XFree86 xterm(patch 116)。但是,Sun继续提供xterm的“openwin”二进制文件,直到2011年的Solaris 11(请参阅xterm常见问题解答Why can't I use the pageup/pagedown keys?)。在那之前,Sun在免费软件CDROM上提供了现代xterm。
提供“保持”功能的通常建议是在所需命令之后包含“读取”命令。这假定要执行的命令在shell中运行。如果您想运行vi
,则建议的修复程序不起作用,因为可能涉及到替代屏幕。此外,它依靠$SHELL
设置(并且对某些设置不起作用,例如tcsh
- 但对bash
有效)。
这是一种改进的脚本,解决了这些问题:
#!/bin/bash
export SHELL=/bin/bash
while [ $# != 0 ]
do
CMD="$1" \
xterm -xrm '*titeInhibit:true' -e $SHELL -c '$SHELL -c "$CMD"; read'
shift 1
done
的xterm
所有版本支持-xrm
开关(谈到自由与XT的X工具包库)。
明确的titeInhibit
资源解决了运行全屏应用程序(如vi
)时遇到的问题。在Solaris 11中为xterm提供的终端描述对于全屏应用使用替代屏幕。这在xterm FAQ Why doesn't the screen clear when running vi?中讨论。如果没有资源设置,如果将脚本运行到vi
几个文件,屏幕将在退出vi
并等待用户按输入关闭窗口后被清除。在其他系统中,这种行为不是默认的,xterm或ncurses源已经被修补以反映包装者的偏好。同样,Solaris 9的terminfo源代码已被修补。尽管如此,未能处理xterm
的常用行为将是一个问题。
例如,即使使用Solaris 9,许多用户依赖ncurses来提供可行的彩色终端描述。 Solaris(如xterm FAQ What $TERM should I use?中所述)提供了xtermc
,但其功能键与实际的xterm完全不同,因此它是一个糟糕的选择。Sun的免费软件光盘的terminfo(来自ncurses)没有修补;使用该终端数据库的人员通过备用屏幕获得了预期的行为。
不幸没有帮助..... 但我会记住它的未来 – 2012-07-26 12:48:24
你的xterm可能是一个奇怪的东西,它不支持'-xrm'。您可以查看暂停运行命令的shell。我会在另一台机器上更新回答 – fork0 2012-07-26 14:50:29
! – 2012-07-27 13:49:18