Добавление каталога к $PATH в CentOS?

mstsc-v:SERVERNAME/F - консоль

хорошо работает

85
задан 15 January 2010 в 05:15
6 ответов

Не рекомендуется редактировать / 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 .

117
ответ дан 28 November 2019 в 19:25

После следования совету 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 под, если оператор. Это решило мою проблему.

11
ответ дан 28 November 2019 в 19:25

Можно установить переменные среды в .rc файле; для оболочек удара (я верю наиболее распространенному, и по умолчанию в CentOS) у каждого пользователя есть файл, названный .bashrc в его корневом каталоге.

Добавьте команду PATH =/usr/lib/ruby-enterprise/bin: $PATH в этот файл для установки его для любого конкретного пользователя.

Для установки его для всех пользователей (как Вы упоминаете) измените его в/etc/bashrc (значение по умолчанию .bashrc в корневом каталоге каждого пользователя должно получить этот файл, но необходимо перепроверить это).

1
ответ дан 28 November 2019 в 19:25

"Интерактивная оболочка входа в систему запускается после успешного входа в систему, с помощью/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.

4
ответ дан 28 November 2019 в 19:25

ИЗВИНИТЕ, что неверно истолковал вопрос следующий ответ относится к профилю ПОЛЬЗОВАТЕЛЯ оставив его на случай, если это поможет кому-то

изменить .bash_profile

nano ~/.bash_profile

, затем где-нибудь в файле добавьте / измените ваши пути, разделенные:

 PATH=$PATH:$HOME/bin:/your/path
 export PATH

, затем перезагрузите свой профиль

source ~/.bash_profile

или выйдите из системы и войдите снова

, если вы отметите ПУТЬ, он должен включать ваши недавно добавленные пути

echo $PATH
2
ответ дан 28 November 2019 в 19:25

Почему все забывают про /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 уже были на моем пути раньше, но по какой-то причине были удалены после того, как я отредактировал этот файл. Так что добавьте эти два каталога, чтобы быть в безопасности.

0
ответ дан 5 June 2020 в 18:25

Теги

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