Если grep oпроизводит вывод цвета, то либо grepявляется псевдонимом для grep --color=autoили grep --color=always(или, возможно, больше параметров), либо GREP_OPTIONSустанавливается значение, которое содержит --color=autoили --color=always. Так $GREP_OPTIONSкак пусто, это должен быть псевдоним.
Поскольку grep o | less -Rне показывает цвета, псевдоним должен быть grep --color=auto(разумный выбор). При использовании псевдонима grepкоманда всегда получает --colorпараметр в командной строке, и он имеет приоритет над переменной среды.
Если вы хотите использовать переменную среды, удалите определение псевдонима из своего ~/.bashrcили для одного сеанса unalias grep. Вы можете заменить alias grep='grep --color=auto'на export GREP_OPTIONS='--color=auto': они имеют практически одинаковое значение, за исключением того, что:
- установка
GREP_OPTIONSдругого значения только переопределяет последнее;
- псевдоним
grepвключается только при запуске из интерактивной оболочки, в то время как настройка GREP_OPTIONSтакже применяется при grepзапуске из сценариев и других приложений.
Никогда не вставляйте --color=alwaysили большинство других параметров GREP_OPTIONS: это сломало бы много программ, которые анализируют вывод grep. --color=autoо единственном безопасном варианте , чтобы положить в GREP_OPTIONS. Для всего остального используйте псевдоним. По этой причине в будущих версиях GNU grep будет прекращена поддержка этой опции.
Обратите внимание, что определение псевдонима входит в ~/.bashrc(это настройка оболочки), тогда как определение переменной среды входит в ~/.profile(это настройка сеанса). См. Есть ли ".bashrc" эквивалентный файл, прочитанный всеми оболочками?
Если вы хотите выполнить команду unaliased только один раз, запустите \grepвместо grep(цитирование любой части имени обходит поиск псевдонимов).
grep v3.1громко жалуетсяGREP_OPTIONSна каждый призыв:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script