Ubuntu下 bash / zsh / ohmyzsh绿色背景问题及解决方案
问题
ubuntu下安装了zsh或ohmyzsh,或使用默认shell等,使用ls
命令,部分目录的背景绿色,看起来十分别扭,如下图:
解决方案如下:
细节不看版
- 如果使用的是
zsh
或ohmyzsh
,首先执行以下命令,如果使用的是默认shell,跳过这一步
vim ~/.zshrc
# 按i开始编辑
# 把以下命令加入到文件末尾
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
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
# 按ESC :wq 保存退出
source ~/.zshrc
- 执行
cd ~
dircolors -p > .dircolors
vim .dircolors
找到 OTHER_WRITABLE 34;42
, (大约在60~70行),将34;42
修改为01;34
如果使用默认的shell,执行
source ~/.bashrc
如果使用的是zsh
或ohmyzsh
,执行
source ~/.zshrc
- 再次使用
ls
命令验证一下,绿色背景消失了:
细节版
问题原因
文件夹的读写执行权限过高,ls
命令会为其标注绿色背景
颜色及背景配置
.dircolors
指明文件/文件夹的颜色,位于/home/username/
下,对于其中的变量,以OTHER_WRITABLE 34;42
为例,第一个参数代表文件(夹)类型, 第一个数字指定其前景颜色,第二个数字指定其背景颜色。我们可以指定自己喜欢的前背景颜色,我更喜欢与普通的文件夹保持风格一致,所以使用了01;34
.
bash / zsh / ohmysh
在~/.bashrc
中,指定了使用.dircolors
的配置来显示颜色,即上述添加的部分
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
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
所以对于bash,修改.dircolors
即可。
对于zsh / ohmyzsh , 先要指定其使用.dircolors
, 所以要在 ~/.zshrc
中添加上述语句。最后记得让配置生效
source ~/.zshrc