Различное поведение неустановленной и пустой переменной среды LESS?

Я хотел изменить поведение по умолчанию для команды less, поэтому я добавил следующее в ~/.profile:

LESS="$LESS -x4"
export LESS

Однако, простое присутствие набора переменных среды LESS кажется изменить поведение команды less, поскольку теперь это заставляет git diff показывать необработанные escape-последовательности.

В более общем смысле, выходные данные

LESS='' git diff

и

unset LESS; git diff

отличаются. В чем разница между установкой LESS unset и LESS в пустое значение (кроме первого, очевидно, подразумевающего -R)?

1
задан 9 July 2019 в 16:38

3 ответа

Это не имеет никакого отношения less, и все, чтобы сделать с git. Заключение в кавычки от git-config(1) страница справочника (шахта акцента):

Когда LESS переменная среды сброшена, Мерзавец устанавливает ее на FRX (если LESS переменная среды установлена, Мерзавец не изменяет ее вообще).

R опция less это, которое управляет, интерпретирует ли это Escape цветов и такой, и который НЕ находится на по умолчанию, но только установлен git если LESS переменная среды была сброшена.

4
ответ дан 7 December 2019 в 13:16

От: Используя сброс по сравнению с установкой переменной для освобождения

Главным образом Вы не видите различия, если Вы не используете set -u:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

Таким образом, действительно это зависит от того, как Вы собираетесь протестировать переменную.

Я добавлю, что мой предпочтительный способ протестировать, если он установлен:

[[ -n $var ]]  # True if the length of $var is non-zero

или

[[ -z $var ]]  # True if zero length

Учитывая это я предполагаю это git использует set -u где-нибудь. Хотя принятый ответ был уже отправлен, я думал, что люди найдут эту информацию интересной.

0
ответ дан 7 December 2019 в 13:16

$LESS переменная среды, используемая less. От man less:

Options are also taken from the environment variable "LESS".  For example, to avoid typing
   "less -options ..." each time less is invoked, you might tell csh:

   setenv LESS "-options"

   or if you use sh:

   LESS="-options"; export LESS

Необходимо использовать некоторое другое имя переменной среды.

-2
ответ дан 7 December 2019 в 13:16

Другие вопросы по тегам:

Похожие вопросы: