Невозможно установить LS_COLORS в bash, используя скрипт

Я пытаюсь установить переменную среды LS_COLORS, используя скрипт запуска. Однако эта переменная не устанавливается.

меры

  1. Загрузил LS_COLORS в ~ / .dircolors

  2. Добавлен TERM = xterm-newTerminalEmulator, где все остальные переменные TERM были определены в .dircolors

  3. Создан скрипт запуска в ~ / bin / ls

  4. Заполнил этот скрипт запуска с помощью shebang, eval для передачи строк в скобках в качестве команды для оболочки и exec для замены всех процессов только процессом ls :

    #!/bin/sh eval $(dircolors -b ~/.dircolors) exec /bin/ls "$@"

  5. Сделал исполняемый файл ~/bin/ls .

Справочная страница для dir_colors говорит

Обычно используемый здесь файл / etc / DIR_COLORS и может быть переопределен файлом .dir_colors в домашнем каталоге.

Может быть, поэтому он не работает, учитывая, что используется только системный скрипт / etc / DIR_COLORS?

Дополнительно

У меня также есть псевдоним для ls установленный как псевдоним ls = “ls –color”, а echo $LS_COLORS ничего не показывает.

Системные спецификации: fedora28 и bash

ОБНОВИТЬ

Я получил это работает, но я не удовлетворен цветами. Значения по умолчанию более интуитивно понятны, и не только это, но LS_COLORS не различает исполняемые файлы и символические ссылки, которые нарушают условия сделки.

Документация нечеткая, но установки переменной окружения недостаточно: вам нужна опция --color . Без значения параметра это соответствует --color=always (большинство людей ожидают --color=auto , который подавляет цвет в трубе).

Вы можете увидеть, как опция --color обрабатывается в исходном коде для ls , в частности, для переменной print_with_color и ее взаимодействия с LS_COLORS .

Для чего бы то ни было, команда eval необходима для оценки команды export возвращаемой dircolors , и эта переменная среды сохраняется в exec . Ваш пример (с добавленной опцией --color ) работал для меня с bash и dash.

Вы используете dircolors в подоболочке, поэтому изменения применяются только внутри подоболочки.

Раковина $ (…)

Попробуйте это вместо этого …

 alias ls="dircolors -b ~/.dircolors && ls"