GREP_COLORS 環境変数のデフォルト値

GREP_COLORS 環境変数のデフォルト値

私のUbuntu 20システムでこのオプションを使用すると、デフォルトの色はgrep --colors=auto通常の背景に赤いテキストです。この動作は、環境変数に値を提供することで無視できますGREP_COLORS。たとえば、一致が赤の背景にプレーンテキストの色で表示されるようにし、値を設定しますexport GREP_COLORS='1;37;41'。ただし、エクスポートする前に空白行があります。なぜですか?特にデフォルトがないと思われるのはなぜですか?grepecho $GREP_COLORSecho $GREP_COLORSGREP_COLORS

答え1

GREP_COLORSにデフォルト値がないように見えるのはなぜですか?

環境変数のためGREP_COLORS 利用できる既存の基本色をオーバーライドします。そんな意味ではない〜しなければならない使用。

これGNU grep 基本色は次のように定義されますgrep.c

/* The color strings used for matched text.
   The user can overwrite them using the deprecated
   environment variable GREP_COLOR or the new GREP_COLORS.  */
static const char *selected_match_color = "01;31";      /* bold red */
static const char *context_match_color  = "01;31";      /* bold red */

/* Other colors.  Defaults look damn good.  */
static const char *filename_color = "35";       /* magenta */
static const char *line_num_color = "32";       /* green */
static const char *byte_num_color = "32";       /* green */
static const char *sep_color      = "36";       /* cyan */
static const char *selected_line_color = "";    /* default color pair */
static const char *context_line_color  = "";    /* default color pair */

parse_grep_colors (void)後で環境変数から値を取得しようとする関数があります。GREP_COLORS空の場合、または構文が無効な場合は無視されます。たとえば、設定すると無視GREP_COLORS='random text'されます。

関連情報