Difference between revisions of "Colorful Bash Prompt"
PuffTheMagic (talk | contribs) (New page: __NOTOC__ Edit /etc/profile and change: <source lang="bash"> if [ "$PS1" ]; then # works for bash and ash (no other shells known to be in use here) PS1='\u@\h:\w\$ ' fi </source> to thi...) |
(adding link to ls --color) |
||
(One intermediate revision by one other user not shown) | |||
Line 84: | Line 84: | ||
unset use_color safe_term match_lhs | unset use_color safe_term match_lhs | ||
</source> | </source> | ||
+ | |||
+ | Please note that when running as root, ls --color will segfault. See [[How To Use "ls" In Color]] for more information. |
Latest revision as of 03:01, 3 August 2009
Edit /etc/profile and change: <source lang="bash"> if [ "$PS1" ]; then
- works for bash and ash (no other shells known to be in use here)
PS1='\u@\h:\w\$ '
fi </source> to this: <source lang="bash"> if [ -n "${BASH_VERSION}" ] ; then
if [ -f /etc/bash/bashrc ] ; then . /etc/bash/bashrc else PS1='\u@\h \w \$ ' fi
else
PS1="${USER:-$(type whoami >/dev/null && whoami)}@$(type uname >/dev/null && uname -n) \$ "
fi </source>
Create this directory: <source lang="bash"> mkdir /etc/bash </source>
Save the file below in /etc/bash/bashrc <source lang="bash">
- /etc/bash/bashrc
if $- != *i* ; then
# Shell is non-interactive. Be done now! return
fi
shopt -s checkwinsize
shopt -s histappend
case ${TERM} in
xterm*|rxvt*|Eterm|aterm|kterm|gnome*|interix) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"' ;; screen) PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"' ;;
esac
use_color=true
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM match_lhs="" -f ~/.dir_colors && match_lhs="${match_lhs}$(<~/.dir_colors)" -f /etc/DIR_COLORS && match_lhs="${match_lhs}$(</etc/DIR_COLORS)" [[ -z ${match_lhs} ]] \
&& type -P dircolors >/dev/null \ && match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
if ${use_color} ; then
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489 if type -P dircolors >/dev/null ; then if -f ~/.dir_colors ; then eval $(dircolors -b ~/.dir_colors) elif -f /etc/DIR_COLORS ; then eval $(dircolors -b /etc/DIR_COLORS) fi fi
if [[ ${EUID} == 0 ]] ; then PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] ' else PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' fi
else
if [[ ${EUID} == 0 ]] ; then # show root@ when we don't have colors PS1='\u@\h \W \$ ' else PS1='\u@\h \w \$ ' fi
fi
unset use_color safe_term match_lhs </source>
Please note that when running as root, ls --color will segfault. See How To Use "ls" In Color for more information.