【问题标题】:Where are default LS_COLORS set in RHEL 5.x?RHEL 5.x 中默认的 LS_COLORS 设置在哪里?
【发布时间】:2010-10-11 13:05:46
【问题描述】:
在 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 等”,我没有成功找到,即使在通过系统搜索之后。
这些值是在哪些文件中定义的?
是的,我知道我可以将LS_COLORS 的内容设置为我喜欢的值,
但我想知道的是在哪里上面的值是定义的。
【问题讨论】:
标签:
terminal
redhat
rhel
ls-colors
【解决方案1】:
我想你要找的东西可以在/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 --sh "$COLORS" 2>/dev/null 又从/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:
你有它。
【解决方案2】:
/etc/DIR_COLORS
上面的和下面的不一样
/etc/DIR_COLORS.xterm.
使用 SSH 终端文件登录时
/etc/DIR_COLORS.xterm
已使用。
【解决方案3】:
来自 'dircolors' 手册页 ::
如果指定了 FILE,则将其读取到
确定要使用的颜色
哪些文件类型和
扩展名。否则,预编译
使用数据库。有关详细信息
这些文件的格式,运行`dircolors
--print-database'。
所以看起来那些代码是在系统中编译的