How to set TERM environment variable for linux shell
bash, linux, xterm
Solution
Looks like you have DOS line feeds in your `.bash_profile`. Don't edit files on Windows, and/or use a proper tool to copy them to your Linux system.
Better yet, get rid of Windows.
In more detail, you probably can't see it, but the erroneous line actually reads
export TERM=xterm-256color^M
where `^M` is a literal DOS carriage return.
Like @EtanReisner mentions in a comment, you should not be hard-coding this value in your login files, anyway. Linux tries very hard to set it to a sane value depending on things like which terminal you are actually using and how you are connected. At most, you might want to override a particular value which the login process often chooses but which is not to your liking. Let's say you want to change to `xterm-256color` iff the value is `xterm`:
case $TERM in xterm) TERM=xterm-256color;; esac
This is not a programming question and yet an extremely common question on StackOverflow. Please google before asking.
Problem
I've got very odd problem when I set export TERM=xterm-256color in ~/.bash_profile. When I try to run nano or emacs I get the following errors. nano: ``` .rror opening terminal: xterm-256color ``` emacs: ``` is not defined.type xterm-256color If that is not the actual type of terminal you have, use the Bourne shell command `TERM=... export TERM' (C-shell: `setenv TERM ...') to specify the correct type. It may be necessary to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well. ``` If I manually enter the following into the shell it works ``` export TERM=xterm-256color ``` I'm stumped.