Это нормальное поведение. Эти переменные среды содержат 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
вместо раскрашивания слова «СИНОПСИС».