Я хотел изменить поведение по умолчанию для команды less
, поэтому я добавил следующее в ~/.profile
:
LESS="$LESS -x4"
export LESS
Однако, простое присутствие набора переменных среды LESS
кажется изменить поведение команды less
, поскольку теперь это заставляет git diff
показывать необработанные escape-последовательности.
В более общем смысле, выходные данные
LESS='' git diff
и
unset LESS; git diff
отличаются. В чем разница между установкой LESS
unset и LESS
в пустое значение (кроме первого, очевидно, подразумевающего -R
)?
Это не имеет никакого отношения less
, и все, чтобы сделать с git
. Заключение в кавычки от git-config(1)
страница справочника (шахта акцента):
Когда
LESS
переменная среды сброшена, Мерзавец устанавливает ее наFRX
(еслиLESS
переменная среды установлена, Мерзавец не изменяет ее вообще).
R
опция less
это, которое управляет, интерпретирует ли это Escape цветов и такой, и который НЕ находится на по умолчанию, но только установлен git
если LESS
переменная среды была сброшена.
От: Используя сброс по сравнению с установкой переменной для освобождения
Главным образом Вы не видите различия, если Вы не используете
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
где-нибудь. Хотя принятый ответ был уже отправлен, я думал, что люди найдут эту информацию интересной.
$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
Необходимо использовать некоторое другое имя переменной среды.