I have a basic understanding of terminal emulators in *nix systems but I have come across a situation I can't explain. I am using GNU screen on my host system with Slackware 13.37 (yeah, time to upgrade, that's a different story). I ssh into Slackware 14.0 box in my LAN with bash 4.2.37. On remote system my $TERM variable is set to `screen'. My problem is that C-l doesn't clear screen but `clear' command itself does. I know that it's readline related issue. readline uses termcap database instead of terminfo. I see there are 3 termcap databases:
Code:
$ ls -Alhtr /etc/termcap*
-rw-r--r-- 1 root root 690K Mar 3 2000 /etc/termcap-BSD
-rw-r--r-- 1 root root 8.8K Feb 16 2004 /etc/termcap
-rw-r--r-- 1 root root 8.8K Feb 16 2004 /etc/termcap-Linux
I noticed that for a proper for screen terminal type can only be found in termcap-BSD. I did symlink /etc/termcap to /etc/termcap-BSD, logged out and logged in and C-l could clear screen. I had a similar situation with lack of entry for screen terminal type in termcap database on one of systems at work so this came as no surprise for me. What surprised is that when Xorg was started and I started xterm I could use C-l with no problems. That makes me think that termcap-BSD is used by default for non-login shells. In xterm inside Xorg session $TERMCAP variable returns value of screen key in termcap database:
Code:
$ echo $TERMCAP
TERMCAP=$'SC|screen|VT 100/ANSI X3.64 virtual terminal:\\\n\t:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:\\\n\t:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:\\\n\t:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\\\n\t:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:\\\n\t:li#33:co#113:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:\\\n\t:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:\\\n\t:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:\\\n\t:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:\\\n\t:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:\\\n\t:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mr=\\E[7m:me=\\E[m:ms:\\\n\t:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:\\\n\t:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:\\\n\t:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\\\n\t:po=\\E[5i:pf=\\E[4i:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:\\\n\t:k4=\\EOS:k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:\\\n\t:k9=\\E[20~:k;=\\E[21~:F1=\\E[23~:F2=\\E[24~:F3=\\E[1;2P:\\\n\t:F4=\\E[1;2Q:F5=\\E[1;2R:F6=\\E[1;2S:F7=\\E[15;2~:\\\n\t:F8=\\E[17;2~:F9=\\E[18;2~:FA=\\E[19;2~:kb=^H:K2=\\EOE:\\\n\t:kB=\\E[Z:kF=\\E[1;2B:kR=\\E[1;2A:*4=\\E[3;2~:*7=\\E[1;2F:\\\n\t:#2=\\E[1;2H:#3=\\E[2;2~:#4=\\E[1;2D:%c=\\E[6;2~:%e=\\E[5;2~:\\\n\t:%i=\\E[1;2C:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:@7=\\E[4~:\\\n\t:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:kd=\\EOB:\\\n\t:kr=\\EOC:kl=\\EOD:km:'
I wonder how is it done. Where is information about termcap database that should be in use stored? I did not found any trace of setting a default termcap database in bash startup files in $HOME or /etc or in Xorg startup files.