错误“dircolors:没有 SHELL 环境变量,并且没有给出 shell 类型选项”

错误“dircolors:没有 SHELL 环境变量,并且没有给出 shell 类型选项”

运行 Linux Mint 17.3 Cinnamon

不久前,创建了一个更改终端颜色的脚本(以匹配我正在遵循的教程)

但是,如果我在另一个帐户上打开终端,则会收到此错误:

dircolors: no SHELL environment variable, and no shell type option given

我不再需要这个脚本了,那么我怎样才能找到这个东西在哪里并摆脱它呢?

答案1

有几个地方你可以可以~/.bashrc除了or之外还使用过脚本/etc/profile;如果不提供有关您所做更改的详细信息,您只会得到一般建议。例如,您可能有

  • 修改或添加文件/etc/profile.d
  • 修改你的~/.profile~/.bash_profile
  • 通过脚本(或桌面“启动器”)运行终端

您可以使用 grep 找到可能的位置,例如,

$ grep -r -l dircolors /etc ~ 2>/dev/null
/etc/profile.d/colorls.csh
/etc/profile.d/colorls.sh
/etc/DIR_COLORS
/etc/DIR_COLORS.lightbgcolor
/etc/DIR_COLORS.256color

错误消息来自dircolors(查看源代码),当您的SHELL环境变量未设置或为空时(查看源代码用于检查)。

答案2

如果未设置 SHELL 时不需要 dircolors(“ls”的彩色输出),则将 eval dircolors 命令包装在“if”中。

如果你总是使用 /bin/bash,那么也许这样做:

# enable color support of ls and also add handy aliases
if [ $SHELL = "/bin/bash" -a -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

相关内容