I have a colorful bash terminal (e.g. ls and vim show colors when configured to do so).
How can I have these colors when connecting to a remote server via ssh?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.Sign up to join this community
Read the dircolors.sh subsection from "Beyond Linux From Scratch" book:
This script uses the
/etc/dircolorsfiles to control the colors of file names in a directory listing. They control colorized output of things like ls --color. The explanation of how to initialize these files is at the end of this section.
cat > /etc/profile.d/dircolors.sh << "EOF" # Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc. if [ -f "/etc/dircolors" ] ; then eval $(dircolors -b /etc/dircolors) if [ -f "$HOME/.dircolors" ] ; then eval $(dircolors -b $HOME/.dircolors) fi fi alias ls='ls --color=auto' alias grep='grep --color=auto' EOF
Using a combination of https://unix.stackexchange.com/questions/9883/how-can-i-run-a-script-immediately-after-connecting-via-ssh and nik's answer you can do:
ssh host.example.com -t '. /etc/profile; . ~/.profile; /bin/bash'
This will execute your profile scripts on login, then open a bash shell. Your profile scripts are where the colors are defined.
Or, for maximum convenience, add the following to your
Host * LocalCommand . /etc/profile; . ~/.profile; /bin/bash