]> Frank Brehm's Git Trees - config/uhu1/etc.git/commitdiff
saving uncommitted changes in /etc prior to emerge run
authorroot <root@uhu1.uhu-banane.de>
Fri, 11 Nov 2016 09:45:12 +0000 (10:45 +0100)
committerroot <root@uhu1.uhu-banane.de>
Fri, 11 Nov 2016 09:45:12 +0000 (10:45 +0100)
bash/bashrc

index 5d09d6941e58129c4980b169546c473d80d00220..c4a4513448f2a4bb67868e5ccdd42490d3438265 100644 (file)
@@ -57,31 +57,41 @@ esac
 # We run dircolors directly due to its changes in file syntax and
 # terminal name patching.
 use_color=false
-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
+if type -P dircolors >/dev/null ; 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
+       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\] '
-               PS1='$? \[\033[01;31m\]\h\[\033[01;30m\]:\[\033[01;34m\]\w \$ \[\033[00m\]'
+               #PS1+='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
+               PS1+='$? \[\033[01;31m\]\h\[\033[01;30m\]:\[\033[01;34m\]\w \$ \[\033[00m\]'
        else
-               #PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
-               PS1='$? \[\033[01;32m\]\u@\h\[\033[01;30m\]:\[\033[01;34m\]\w > \[\033[00m\]'
+               #PS1+='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
+               PS1+='$? \[\033[01;32m\]\u@\h\[\033[01;30m\]:\[\033[01;34m\]\w > \[\033[00m\]'
        fi
 
        alias ls='ls --color=auto'
@@ -102,7 +112,7 @@ for sh in /etc/bash/bashrc.d/* ; do
 done
 
 # Try to keep environment pollution down, EPA loves us.
-unset use_color safe_term match_lhs sh
+unset use_color sh
 
 if [ -d /usr/scripts ] ; then
   PATH=/usr/scripts:$PATH