Mehr Farbe im Terminal » serra.me

Mehr Farbe im Terminal

Während das Terminal unter Gentoo immer recht „bunt“ daherkommt – so wird etwa für den root-Benutzer der Hostname in rot dargestellt, der aktuelle Verzeichnispfad in blau – sind die Terminals unter Debian und anderen Linux-Distributionen standardmäßig recht farbsparsam. Glücklicherweise ist die Darstellung des Terminals durch eine Konfigurationsdatei namens bashrc konfigurierbar.

Wer es lieber etwas abwechslungsreicher mag, findet nachfolgend die Standard-bashrc von Gentoo. Die funktioniert natürlich nicht nur unter Gentoo selbst, sondern (theoretisch) überall dort, wo Bash läuft.

Unter Debian liegt die globale .bashrc unter /etc/bash.bashrc, wer die Änderungen nur auf einzelne Benutzer anwenden möchte, wird in der Datei ~/.bashrc fündig.

Kleiner Hinweis: Zumindest unter Debian gilt die „globale“ .bashrc nur für den Root-Benutzer. Alle weiteren Benutzer werden während des Anlegens bereits mit einer eigenen .bashrc im home-Verzeichnis ausgestattet. Möchte mal die Änderungen auch für zukünftige Benutzerkonten umsetzen, ist /etc/skel/.bashrc die anzupassende bzw. zu ersetzende Datei, da diese als Vorlage (Skeleton) für neue Benutzer genutzt wird.

Ich habe auf dem „ausschlaggebenden“ System die globale .bashrc-Datei einfach komplett durch die folgende ersetzt.

# /etc/bash/bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !

# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi

# Bash won't get SIGWINCH if another process is in the foreground.
# Enable checkwinsize so that bash will check the terminal size when
# it regains control.  #65623
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
shopt -s checkwinsize

# Disable completion when the input buffer is empty.  i.e. Hitting tab
# and waiting a long time for bash to expand all of $PATH.
shopt -s no_empty_cmd_completion

# Enable history appending instead of overwriting when exiting.  #139609
shopt -s histappend

# Save each command to the history file as it's executed.  #517342
# This does mean sessions get interleaved when reading later on, but this
# way the history is always up to date.  History is not synced across live
# sessions though; that is what `history -n` does.
# Disabled by default due to concerns related to system recovery when $HOME
# is under duress, or lives somewhere flaky (like NFS).  Constantly syncing
# the history will halt the shell prompt until it's finished.
#PROMPT_COMMAND='history -a'

# Change the window title of X terminals
case ${TERM} in
        [aEkx]term*|rxvt*|gnome*|konsole*|interix)
                PS1='\[\033]0;\u@\h:\w\007\]'
                ;;
        screen*)
                PS1='\[\033k\u@\h:\w\033\\\]'
                ;;
        *)
                unset PS1
                ;;
esac

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS.  Try to use the external file
# first to take advantage of user additions.
# We run dircolors directly due to its changes in file syntax and
# terminal name patching.
use_color=false
if type -P dircolors >/dev/null ; then
        # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
        LS_COLORS=
        if [[ -f ~/.dir_colors ]] ; then
                eval "$(dircolors -b ~/.dir_colors)"
        elif [[ -f /etc/DIR_COLORS ]] ; then
                eval "$(dircolors -b /etc/DIR_COLORS)"
        else
                eval "$(dircolors -b)"
        fi
        # Note: We always evaluate the LS_COLORS setting even when it's the
        # default.  If it isn't set, then `ls` will only colorize by default
        # based on file attributes and ignore extensions (even the compiled
        # in defaults of dircolors). #583814
        if [[ -n ${LS_COLORS:+set} ]] ; then
                use_color=true
        else
                # Delete it if it's empty as it's useless in that case.
                unset LS_COLORS
        fi
else
        # Some systems (e.g. BSD & embedded) don't typically come with
        # dircolors so we need to hardcode some terminals in here.
        case ${TERM} in
        [aEkx]term*|rxvt*|gnome*|konsole*|screen|cons25|*color) use_color=true;;
        esac
fi

if ${use_color} ; then
        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

        alias ls='ls --color=auto'
        alias grep='grep --colour=auto'
        alias egrep='egrep --colour=auto'
        alias fgrep='fgrep --colour=auto'
else
        # show root@ when we don't have colors
        PS1+='\u@\h \w \$ '
fi

for sh in /etc/bash/bashrc.d/* ; do
        [[ -r ${sh} ]] && source "${sh}"
done

# Try to keep environment pollution down, EPA loves us.
unset use_color sh

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.