Это нормальное поведение. Эти переменные среды содержат escape-последовательности, которые заставляют терминал менять свой основной цвет. Вы получаете тот же визуальный эффект, когда любая программа выводит их, будь то lessили env.
Эти переменные должны содержать фактические escape-символы, less не выполняет никакой постобработки на них.
Обычно вы можете поместить меньше переменных конфигурации в файл lesskey , но это не сработает для LESS_TERMCAP_xxпеременных, потому что less читает их до того, как прочитает файл lesskey (начиная с менее 444). Таким образом, у вас нет выбора, кроме как поместить их в окружающую среду.
Если вы хотите, чтобы эти переменные применялись только к manдругим применениям less, а не к другим , вы можете использовать псевдоним, для manкоторого в качестве PAGERпеременной задается скрипт-обертка, который устанавливает переменные среды.
#!/bin/sh
escape=␛ # a literal escape character
export LESS_TERMCAP_md=$escape'[01;34m'
…
exec less "$@"
(В качестве альтернативы, используйте #!/bin/bashв первой строке, и вы можете использовать #'\e'синтаксис для получения escape-символа. В системах, где /bin/shесть тире, использование /bin/shочень немного быстрее, хотя на практике это может быть незаметно.)
Назовите этот скрипт less-colorи добавьте его alias man='PAGER=less-color man'в свой ~/.bashrcили ~/.zshrc. В некоторых системах вместо создания псевдонима вы можете указать manиспользовать другой пейджер, установив MANPAGERпеременную окружения: export MANPAGER=less-colorв вашем ~/.profile.
man top=\e[01;34mSYNOPSIS\e[00mвместо раскрашивания слова «СИНОПСИС».