Не рекомендуется редактировать / etc / profile
для подобных вещей, потому что вы потеряете все свои изменения всякий раз, когда CentOS публикует обновление для этого файла. Это именно то, для чего предназначен /etc/profile.d
:
# echo 'pathmunge /usr/lib/ruby-enterprise/bin' > /etc/profile.d/ree.sh
# chmod +x /etc/profile.d/ree.sh
Снова войдите в систему и наслаждайтесь (безопасно) обновленным PATH:
# echo $PATH
/usr/lib/ruby-enterprise/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# which ruby
/usr/lib/ruby-enterprise/bin/ruby
Вместо повторного входа вы можете перезагрузить профиль:
# . /etc/profile
Это обновит переменную $ PATH
.
После следования совету fmonk я проверил /etc/bashrc
, где я заметил, что это сказало, что "Материал среды входит в/etc/profile". Я продолжил заглядывать /etc/profile
, Я видел это:
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
[...]
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
Для решения моей проблемы добавил я просто pathmunge /usr/lib/ruby-enterprise/bin
под, если оператор. Это решило мою проблему.
Можно установить переменные среды в .rc файле; для оболочек удара (я верю наиболее распространенному, и по умолчанию в CentOS) у каждого пользователя есть файл, названный .bashrc в его корневом каталоге.
Добавьте команду PATH =/usr/lib/ruby-enterprise/bin: $PATH в этот файл для установки его для любого конкретного пользователя.
Для установки его для всех пользователей (как Вы упоминаете) измените его в/etc/bashrc (значение по умолчанию .bashrc в корневом каталоге каждого пользователя должно получить этот файл, но необходимо перепроверить это).
"Интерактивная оболочка входа в систему запускается после успешного входа в систему, с помощью/bin/login, путем чтения/etc/passwd файла. Этот вызов оболочки обычно читает/etc/profile и его частный эквивалентный ~/.bash_profile после запуска.
Интерактивная оболочка невхода в систему обычно запускается в командной строке с помощью программной оболочки (например, [быстрый] $/bin/bash) или командой/bin/su. Интерактивная оболочка невхода в систему также запускается с терминальной программы, такой как xterm или консоль из графической среды. Этот тип вызова оболочки обычно копирует родительскую среду и затем читает ~ пользователя/.bashrc файл для дополнительных инструкций по конфигурации запуска". http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
Поэтому я не поместил бы переменные среды в bashrc, потому что это не только против общей конвенции, но и Вы также пропустите свой bashrc varialbles при вызове терминала от графической Настольной среды.
На Redhat в /etc/profile
Я нашел этот комментарий:
"Псевдонимы в масштабе всей системы и функции должны войти в/etc/bashrc. Персональные переменные среды и программы запуска должны войти в ~/.bash_profile. Персональные псевдонимы и функции должны войти в ~/.bashrc".
Таким образом, если Вы хотите установить переменные среды на пользовательской основе, сделайте это в .bash_profile файле пользователя.
Заголовок к .bash_profile
Я читал:
"Персональные переменные среды и программы запуска.
Персональные псевдонимы и функции должны войти в ~/.bashrc. Переменные среды в масштабе всей системы и программы запуска находятся в/etc/profile. Псевдонимы в масштабе всей системы и функции находятся в/etc/bashrc."
Заключение
Если Вы хотите только, чтобы корень видел, что программы находятся, например, в /sbin
Я добавил бы тот путь к корню .bash_profile
файл. Но если Вы хотите, чтобы каждый пользователь видел, какие корневые определенные программы установлены на Вашем поле, я поместил бы /sbin
в /etc/.profile
. Теперь каждый пользователь может использовать заполнение клавишей Tab, чтобы искать корневые определенные программы и поднять права при необходимости.
Особый случай: SSH
Когда ssh запускается с командной строки, интерактивная оболочка входа в систему запускается. Но в этом случае /etc/profile
не читается. Когда я определил переменные среды в .bash_profile
файл каждого пользователя это работало с ssh.
ИЗВИНИТЕ, что неверно истолковал вопрос следующий ответ относится к профилю ПОЛЬЗОВАТЕЛЯ оставив его на случай, если это поможет кому-то
изменить .bash_profile
nano ~/.bash_profile
, затем где-нибудь в файле добавьте / измените ваши пути, разделенные:
PATH=$PATH:$HOME/bin:/your/path
export PATH
, затем перезагрузите свой профиль
source ~/.bash_profile
или выйдите из системы и войдите снова
, если вы отметите ПУТЬ, он должен включать ваши недавно добавленные пути
echo $PATH
Почему все забывают про /etc/environment
. Этот файл предназначен для установки переменных среды для всех пользователей. Просто добавьте пару имя-значение переменной окружения в одну строку. Не используйте переменные.
/etc/environment
PATH=:/usr/lib/ruby-enterprise/bin:/usr/bin:/usr/local/bin:
Это добавит каталоги /usr/lib/ruby-enterprise/bin
/usr/bin
и /usr/local/bin
в переменную PATH для всех пользователей после выхода из системы или перезапуска.
/usr/bin
и /usr/local/bin
уже были на моем пути раньше, но по какой-то причине были удалены после того, как я отредактировал этот файл. Так что добавьте эти два каталога, чтобы быть в безопасности.