How to prevent HP-UX command "less" from messing up my prompt?
The feature mentioned is xterm's alternate screen which was introduced in X.V10R4 (December 1986). Although the feature was supported, it was not added to the terminal description until X11R6 (about ten years).
HPUX's terminal description for xterm
happens to be the same as the X11R5 description, with some additions (mainly function keys 1-12). Again, the feature (function keys) had been supported by the program for some time, but was not added to the terminal description.
Here's what infocmp
reports for HPUX:
# Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
am, km, xenl,
cols#80, lines#65,
bel=^G, blink=@, bold=\E[1m, civis=\E[?25I,
clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[1;1H, ht=\t,
hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
il1=\E[L, ind=\n, kbs=\177, kcub1=\EOD, kcud1=\EOB,
kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
kf8=\E[19~, kf9=\E[20~, knp=\E[6~, kpp=\E[5~, rc=\E8,
rev=\E[7m, ri=\EM, rmkx=\E[?1l, rmso=\E[m,
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
sc=\E7,
sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
sgr0=\E[m, smkx=\E[?1h, smso=\E[7m, tbc=\E[3g,
Here are links to the X11R6 file, and the X11R3 (unchanged through X11R5). The alternate screen feature in the X11R6 terminal description is provided by this line:
smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8,
With ncurses (Linux, etc), you have a much later terminal description which lists all of the applicable features.
For HPUX, you could fix the problem by using tic to compile a terminal description with the feature added. If you have root access on the HPUX machine, that's simple:
infocmp >foo
vi foo (adding the `smcup` and `rmcup` line)
sudo tic foo
Otherwise, you can work around it by setting the TERMINFOenvironment variable to your own terminfo directory, and running
tic` to compile into that directory. Something like
TERMINFO=$HOME/myterm; export TERMINFO
mkdir -p $TERMINFO/x
tic foo
(you would also need TERMINFO
set in your shell for followup sessions).