manpagez: man pages & more
info grep
Home | html | info | man

File: grep.info,  Node: Environment Variables,  Next: Exit Status,  Prev: Command-line Options,  Up: Invoking

2.2 Environment Variables
=========================

The behavior of ‘grep’ is affected by several environment variables, the
most important of which control the locale, which specifies how ‘grep’
interprets characters in its patterns and data.

   The locale for category ‘LC_FOO’ is specified by examining the three
environment variables ‘LC_ALL’, ‘LC_FOO’, and ‘LANG’, in that order.
The first of these variables that is set specifies the locale.  For
example, if ‘LC_ALL’ is not set, but ‘LC_COLLATE’ is set to
‘pt_BR.UTF-8’, then a Brazilian Portuguese locale is used for the
‘LC_COLLATE’ category.  As a special case for ‘LC_MESSAGES’ only, the
environment variable ‘LANGUAGE’ can contain a colon-separated list of
languages that overrides the three environment variables that ordinarily
specify the ‘LC_MESSAGES’ category.  The ‘C’ locale is used if none of
these environment variables are set, if the locale catalog is not
installed, or if ‘grep’ was not compiled with national language support
(NLS). The shell command ‘locale -a’ lists locales that are currently
available.

   The following environment variables affect the behavior of ‘grep’.

‘GREP_COLOR’
     This obsolescent variable interacts with ‘GREP_COLORS’ confusingly,
     and ‘grep’ warns if it is set and is not overridden by
     ‘GREP_COLORS’.  Instead of ‘GREP_COLOR='COLOR'’, you can use
     ‘GREP_COLORS='mt=COLOR'’.

‘GREP_COLORS’
     This variable controls how the ‘--color’ option highlights output.
     Its value is a colon-separated list of ‘terminfo’ capabilities that
     defaults to ‘ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36’
     with the ‘rv’ and ‘ne’ boolean capabilities omitted (i.e., false).
     The two-letter capability names refer to terminal "capabilities,"
     the ability of a terminal to highlight text, or change its color,
     and so on.  These capabilities are stored in an online database and
     accessed by the ‘terminfo’ library.  Non-empty capability values
     control highlighting using Select Graphic Rendition (SGR) commands
     interpreted by the terminal or terminal emulator.  (See the section
     in the documentation of your text terminal for permitted values and
     their meanings as character attributes.)  These substring values
     are integers in decimal representation and can be concatenated with
     semicolons.  ‘grep’ takes care of assembling the result into a
     complete SGR sequence (‘\33[’...‘m’).  Common values to concatenate
     include ‘1’ for bold, ‘4’ for underline, ‘5’ for blink, ‘7’ for
     inverse, ‘39’ for default foreground color, ‘30’ to ‘37’ for
     foreground colors, ‘90’ to ‘97’ for 16-color mode foreground
     colors, ‘38;5;0’ to ‘38;5;255’ for 88-color and 256-color modes
     foreground colors, ‘49’ for default background color, ‘40’ to ‘47’
     for background colors, ‘100’ to ‘107’ for 16-color mode background
     colors, and ‘48;5;0’ to ‘48;5;255’ for 88-color and 256-color modes
     background colors.

     Supported capabilities are as follows.

     ‘sl=’
          SGR substring for whole selected lines (i.e., matching lines
          when the ‘-v’ command-line option is omitted, or non-matching
          lines when ‘-v’ is specified).  If however the boolean ‘rv’
          capability and the ‘-v’ command-line option are both
          specified, it applies to context matching lines instead.  The
          default is empty (i.e., the terminal's default color pair).

     ‘cx=’
          SGR substring for whole context lines (i.e., non-matching
          lines when the ‘-v’ command-line option is omitted, or
          matching lines when ‘-v’ is specified).  If however the
          boolean ‘rv’ capability and the ‘-v’ command-line option are
          both specified, it applies to selected non-matching lines
          instead.  The default is empty (i.e., the terminal's default
          color pair).

     ‘rv’
          Boolean value that reverses (swaps) the meanings of the ‘sl=’
          and ‘cx=’ capabilities when the ‘-v’ command-line option is
          specified.  The default is false (i.e., the capability is
          omitted).

     ‘mt=01;31’
          SGR substring for matching non-empty text in any matching line
          (i.e., a selected line when the ‘-v’ command-line option is
          omitted, or a context line when ‘-v’ is specified).  Setting
          this is equivalent to setting both ‘ms=’ and ‘mc=’ at once to
          the same value.  The default is a bold red text foreground
          over the current line background.

     ‘ms=01;31’
          SGR substring for matching non-empty text in a selected line.
          (This is used only when the ‘-v’ command-line option is
          omitted.)  The effect of the ‘sl=’ (or ‘cx=’ if ‘rv’)
          capability remains active when this takes effect.  The default
          is a bold red text foreground over the current line
          background.

     ‘mc=01;31’
          SGR substring for matching non-empty text in a context line.
          (This is used only when the ‘-v’ command-line option is
          specified.)  The effect of the ‘cx=’ (or ‘sl=’ if ‘rv’)
          capability remains active when this takes effect.  The default
          is a bold red text foreground over the current line
          background.

     ‘fn=35’
          SGR substring for file names prefixing any content line.  The
          default is a magenta text foreground over the terminal's
          default background.

     ‘ln=32’
          SGR substring for line numbers prefixing any content line.
          The default is a green text foreground over the terminal's
          default background.

     ‘bn=32’
          SGR substring for byte offsets prefixing any content line.
          The default is a green text foreground over the terminal's
          default background.

     ‘se=36’
          SGR substring for separators that are inserted between
          selected line fields (‘:’), between context line fields (‘-’),
          and between groups of adjacent lines when nonzero context is
          specified (‘--’).  The default is a cyan text foreground over
          the terminal's default background.

     ‘ne’
          Boolean value that prevents clearing to the end of line using
          Erase in Line (EL) to Right (‘\33[K’) each time a colorized
          item ends.  This is needed on terminals on which EL is not
          supported.  It is otherwise useful on terminals for which the
          ‘back_color_erase’ (‘bce’) boolean ‘terminfo’ capability does
          not apply, when the chosen highlight colors do not affect the
          background, or when EL is too slow or causes too much flicker.
          The default is false (i.e., the capability is omitted).

     Note that boolean capabilities have no ‘=’...  part.  They are
     omitted (i.e., false) by default and become true when specified.

‘LC_ALL’
‘LC_COLLATE’
‘LANG’
     These variables specify the locale for the ‘LC_COLLATE’ category,
     which might affect how range expressions like ‘a-z’ are
     interpreted.

‘LC_ALL’
‘LC_CTYPE’
‘LANG’
     These variables specify the locale for the ‘LC_CTYPE’ category,
     which determines the type of characters, e.g., which characters are
     whitespace.  This category also determines the character encoding.
     *Note Character Encoding::.

‘LANGUAGE’
‘LC_ALL’
‘LC_MESSAGES’
‘LANG’
     These variables specify the locale for the ‘LC_MESSAGES’ category,
     which determines the language that ‘grep’ uses for messages.  The
     default ‘C’ locale uses American English messages.

‘POSIXLY_CORRECT’
     If set, ‘grep’ behaves as POSIX requires; otherwise, ‘grep’ behaves
     more like other GNU programs.  POSIX requires that options that
     follow file names must be treated as file names; by default, such
     options are permuted to the front of the operand list and are
     treated as options.

‘TERM’
     This variable specifies the output terminal type, which can affect
     what the ‘--color’ option does.  *Note General Output Control::.

   The ‘GREP_OPTIONS’ environment variable of ‘grep’ 2.20 and earlier is
no longer supported, as it caused problems when writing portable
scripts.  To make arbitrary changes to how ‘grep’ works, you can use an
alias or script instead.  For example, if ‘grep’ is in the directory
‘/usr/bin’ you can prepend ‘$HOME/bin’ to your ‘PATH’ and create an
executable script ‘$HOME/bin/grep’ containing the following:

     #! /bin/sh
     export PATH=/usr/bin
     exec grep --color=auto --devices=skip "$@"

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.