Скрипты в /etc/profile.d выполняются дважды при входе в систему

Справочная информация:

Я пытаюсь настроить сервер Linux с CentOS 7 для нескольких пользователей. После установки java я хочу глобально установить переменную среды $ JAVA_HOME для всех пользователей и добавить ее в $ PATH .

Для этого я перешел на / etc / profile скрипт, который вызывается при запуске. Я последовал совету в верхней части скрипта:

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

Я создал свой собственный /etc/profile.d/custom.

  1. Является ли это ошибкой в ​​операционной системе CentOS 7?

  2. Есть ли хороший обходной путь, который я могу использовать для создания глобальных параметров среды без их повторной установки? (Я не хочу устанавливать их в / etc / environment , потому что я не могу использовать переменные bash в этом файле.)

2
задан 27 December 2017 в 22:57
1 ответ

Я создавал сотни centos 7 за последние 6 месяцев, кое-как их настраивал, и я никогда не видел того, что вы описываете. Как сказал Томас, по умолчанию /root/.bashrc не вызывает / исходные скрипты в /etc/profile.d.

EDIT: На самом деле, /root/.bashrc ИМЕЕТ источник /etc/prodile.d/* с помощью / etc / bashrc и предотвращает эхо:

# Only display echos from profile.d scripts if we are no login shell
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
    if [ -r "$i" ]; then
        if [ "$PS1" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

Угадайте, что мои недавние проблемы отличаются друг от друга, и мне пришлось их решить быстро, но не достаточно копать. Мои извинения.

СТАРЫЙ ОТВЕТ

1 / Полагаю, это действительно не ошибка (какой ISO вы получили для своего centos 7? Вы суммировали его md5? Этот вопрос звучит для меня действительно странно)

2 / и тогда нет обходного пути, кроме как удалить код, который заставляет скрипты загружаться дважды?

/etc/profiles.d кажется правильным местом для размещения некоторых скриптов, если они «молчаливы», что означает определение некоторых переменных среды, но не создание echo или вызов некоторого динамического motd, или в какой-то момент он будет взаимодействовать неким плохим образом с другими скриптами, которые вы будете запускать (недавно получил опыт установки netdata).

Некоторые интересные моменты для чтения в unix .stackexchange.

0
ответ дан 3 December 2019 в 14:03

Теги

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