Keeping in the spirit of reproducing hard-to-find information on my blog, here’s something I recently discovered when trying to get my terminal working properly with a Linux server at school.

I use rxvt-unicode as my terminal emulator on Linux for its light weight nature and text based configuration. Unfortunately, sometimes when I SSH into some machines (like the OSU CSE department’s stdlinux), I get a message like this:

tput: unknown terminal "rxvt-unicode-256color"
tcsh: No entry for terminal type "rxvt-unicode-256color"
tcsh: using dumb terminal settings

What’s happening is that a lot of machines don’t understand how to properly interact with my terminal emulator. Different terminals have different support for certain features, and they way that they communicate this is by setting the environment variable $TERM. The system then has definitions for various $TERM values about what features are supported, and shells and other programs can use this information to help their output appear correct. These mapping files, called terminfo files, are missing for rxvt-unicode on many systems.

Luckily, terminfo files can be stored in your home directory in ~/.terminfo, so all you should have to do is copy the file from the computer you installed rxvt-unicode on to the machine that’s complaining.

ssh stdlinux mkdir -p ~/.terminfo/r
scp /usr/share/terminfo/r/rxvt-unicode-256color stdlinux:.terminfo/r/

Thanks to Tom Ryder’s original post, which lead me to this solution and goes into a lot more detail about terminal strings, for the curious.