RHEL 5.x中默认的LS_COLORS在哪里设置?

4
在Red Hat Enterprise Linux 5.x的终端中运行以下命令:
[$] Env

返回(除其他事项外):

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

大部分 LS_COLORS 内容可以在文件中找到:

/etc/DIR_COLORS

但是,像"no=00:fi=00:di=01;34:ln=01;36:pi=40;33"这样的值,即使在系统中使用grep搜索,我也无法找到。

这些值是在哪个文件中定义的?

是的,我知道我可以将LS_COLORS的内容设置为我想要的值,但我想知道上面的值是在哪里被定义的。

3个回答

9
我认为您要寻找的内容可以在/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
LS_COLORS变量是通过对dircolors --sh "$COLORS" 2>/dev/null输出的评估来设置的,而dircolors又从/etc/DIR_COLORS中获取其值。换句话说,默认情况下,LS_COLORS中的值与DIR_COLORS相同。
您可以通过比较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

并且 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:

这就是全部内容。


3
  /etc/DIR_COLORS 

上述内容与下面的内容不同。
 /etc/DIR_COLORS.xterm.

当使用SSH终端文件登录时

/etc/DIR_COLORS.xterm 

被使用。


0

来自'dircolors' manpage ::

如果指定了 FILE,则读取它以确定要为哪些文件类型和扩展名使用哪些颜色。否则,将使用预编译的数据库。有关这些文件格式的详细信息,请运行“dircolors --print-database”。

因此,看起来这些代码已经在系统中编译好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接