エラー "dircolors: SHELL 環境変数がなく、シェル型オプションが指定されていません。"

エラー "dircolors: SHELL 環境変数がなく、シェル型オプションが指定されていません。"

Linux Mint 17.3 Cinnamonの実行

しばらく前に端末の色を変更するスクリプトが作成されました(私がフォローしているチュートリアルと一致するように)。

ただし、別のアカウントで端末を開くと、次のエラーが発生します。

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

このスクリプトはもう必要ありません。では、このスクリプトがどこにあるのか、どうやって見つけて削除できますか?

答え1

できる場所がいくつかあります。できる~/.bashrcOR以外にスクリプトが使用されました/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

関連情報