即使设置 LS_COLORS 后,ls 命令仍会读取默认配置

即使设置 LS_COLORS 后,ls 命令仍会读取默认配置

我知道有几个与此相关的问题,但我无法解决我的问题。

预期行为
我想要的是禁用所有着色内容并将目录设为洋红色。换句话说:--color=never+洋红色目录。

目前的行为
ls已经读取我的LS_COLORS环境变量我还看到目录的绿色背景。看起来这LS_COLORS只是对默认颜色的覆盖。

到目前为止我做了什么

  1. 我编辑了我的~/.bashrc文件,LS_COLORS手动设置并export编辑它。
  2. 我注意到这个文件中有一个部分尝试运行dircolors程序,以便它设置LS_COLORS。但由于我自己做,所以我注释掉了:
# enable color support of ls and also add handy aliases                               
#if [ -x /usr/bin/dircolors ]; then                                                   
#    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolor> 
#    alias ls='ls --color=auto'                                                       
#    #alias dir='dir --color=auto'                                                    
#    #alias vdir='vdir --color=auto'                                                  
#                                                                                     
#    alias grep='grep --color=auto'                                                   
#    alias fgrep='fgrep --color=auto'                                                 
#    alias egrep='egrep --color=auto'                                                 
#fi
  1. 我是这样设置的:
LS_COLORS='di=01;35'; export LS_COLORS                                                
alias ls='ls --color=auto' 

同样,上面的行有效。如果我更改3534我会看到差异。

但令人烦恼的是我只想要这个颜色而不想要其他的:

在此输入图像描述

ls应该只读取这个变量来着色吗?

答案1

ls具有多种文件类型的默认颜色,如果您不希望应用它们,则需要覆盖所有颜色。

就你而言,

eval $(dircolors -p | awk '/^TERM/ { print; next } /^[A-Z]/ { $2 = "00" } /^DIR/ { $2 = "01;35" } /^\./ { next } 1' | dircolors -)

将清除所有默认值并设置目录颜色。

相关内容