解决WSL下目录显示绿底的问题

开心撸命令行:D

Posted by kevin on October 17, 2019

preface

本来刚刚把自己的终端给配置得漂漂亮亮,然后就发现了一个令人非常不爽的事情,在 WSL 里面输入 ls 命令时,文件夹会带有绿色的背景色,可以说是十分丑了,一点也不搭这么漂亮的终端,于是上网搜了很久去除这个绿色背景的方法。

green-bg

How to ?

关于这个背景色的由来,查资料是说因为文件夹的权限是 777,我们知道,Linux 的权限分布是 用户 | 组 | 其他组 三个权限区,每个区都有三种 r | w | x 权限对应着 读 | 写 | 执行 ,因为绿底文件夹的其他组拥有写入的权限,因此系统会将它的底色变绿。

关于它为什么会使其他组拥有写入权限,这篇文章中提到了,主要是文件系统的锅,但是我不想深究原因,只想解决它,于是就开始搜索解决方案。

Troubleshooter

0x01

跟着搜来的解决方案,照着做

$ cd # move to home dir
$ dircolors -p > .dircolors
$ vim .dircolors

就说找到 OTHER_WRITABLE 这一行,把 34;42 改成 34;49 ,再保存就可以了

咳咳,按照这个教程改了之后,我重启了一遍终端,然而并没有什么卵用,还是呈现绿底,惊奇的是网上的人按照这个教程都成功解决了,我又佛了。。

0x02

就在我即将放弃的时候,我突然灵机一动,退出了 zsh ,用 bash 试了一下,发现绿底真就没了,难道是因为 zsh 的原因,害!可能还真是。那我又去找 Google 搜索了 zsh 改变文件夹绿底的方法,搜了好久搜到了一篇

,终于把我的问题给解决了,因为 zsh 和 bash 的颜色的逻辑是不相同的,所以要在 bash 里面修改之后再将颜色部分的逻辑拷贝到 zsh 里面。所以,打开 .bashrc 文件,找到下面这些内容

 75 # enable color support of ls and also add handy aliases
 76 if [ -x /usr/bin/dircolors ]; then
 77     test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
 78     alias ls='ls --color=auto'
 79     #alias dir='dir --color=auto'
 80     #alias vdir='vdir --color=auto'
 81 
 82     alias grep='grep --color=auto'
 83     alias fgrep='fgrep --color=auto'
 84     alias egrep='egrep --color=auto'
 85 fi

然后把这些内容给复制到 .zshrc 中,执行更新操作 source .zshrc 就行了,终于把这恶心的绿底给去除了。


reference1

reference2