-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