Where are default LS_COLORS set in RHEL 5.x?

17.9k views Asked by At

In a terminal in Red Hat Enterprise Linux 5.x, running:

[$] Env

returns (among other things):

"LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33 . . ."

Most of the content in LS_COLORS I find in the file:

/etc/DIR_COLORS

BUT the values "no=00:fi=00:di=01;34:ln=01;36:pi=40;33 etc.", I have no success finding, even after grepping through the system.

In what file(s) are these values defined?

Yes, I know I can set the content of LS_COLORS to the values I please, but what I wonder about is where the values above are defined.

3

There are 3 answers

0
jathanism On

I think what you are looking for can be found at /etc/profile.d/colorls.sh:

# color-ls initialization

alias ll='ls -l' 2>/dev/null
alias l.='ls -d .*' 2>/dev/null

COLORS=/etc/DIR_COLORS
[ -e "/etc/DIR_COLORS.$TERM" ] && COLORS="/etc/DIR_COLORS.$TERM"
[ -e "$HOME/.dircolors" ] && COLORS="$HOME/.dircolors"
[ -e "$HOME/.dir_colors" ] && COLORS="$HOME/.dir_colors"
[ -e "$HOME/.dircolors.$TERM" ] && COLORS="$HOME/.dircolors.$TERM"
[ -e "$HOME/.dir_colors.$TERM" ] && COLORS="$HOME/.dir_colors.$TERM"
[ -e "$COLORS" ] || return

eval `dircolors --sh "$COLORS" 2>/dev/null`
[ -z "$LS_COLORS" ] && return

if ! egrep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null ; then
        alias ll='ls -l --color=tty' 2>/dev/null
        alias l.='ls -d .* --color=tty' 2>/dev/null
        alias ls='ls --color=tty' 2>/dev/null
fi

The LS_COLORS variable is set by an evaluation of the output of dircolors --sh "$COLORS" 2>/dev/null, which in turn receives its values from /etc/DIR_COLORS. So in other words, the values in LS_COLORS are identical to DIR_COLORS by default.

You can prove this by comparing the output from dircolors --sh "$COLORS":

$ dircolors --sh "$COLORS" 
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:';
export LS_COLORS

And echo $LS_COLORS:

$ echo $LS_COLORS
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:

And there you have it.

0
Sujoy On

from 'dircolors' manpage ::

If FILE is specified, read it to determine which colors to use for which file types and extensions.Otherwise, a precompiled database is used. For details on the format of these files, run `dircolors --print-database'.

so it seems like those codes are compiled in the system

0
AudioBubble On
  /etc/DIR_COLORS 

The above one is not the same as the following.

 /etc/DIR_COLORS.xterm.

When logged with SSH terminal file

/etc/DIR_COLORS.xterm 

is used.