Полный вид того, где переменная PATH задана в bash

Я читал в нескольких местах, что PATH установлен в / etc / profile или файл .profile, который находится в домашнем каталоге.

Являются ли они единственными местами, в которых установлен путь? Я хочу лучше понять это.

В файле / etc / profile в комментарии говорится «общесистемный файл .profile для оболочки Bourne». Означает ли это, что файлы профилей являются основными файлами конфигурации для bash?

В этом файле я не вижу, что PATH var устанавливается вообще. В файле .profile в домашнем каталоге есть следующая строка:

PATH="$HOME/bin:$PATH" 

Это сбросит PATH на внешний вид, потому что он конкатенирует уже установленную строку $ PATH с $ HOME / bin: правильно? Но если etc / profile и ~ / .profile являются единственными файлами, устанавливающими PATH, где $ PATH поступает из этой строки кода, если он не определен в / etc / profile?

Может ли кто-нибудь испытать, пожалуйста, дайте широкое и подробное объяснение переменной PATH? Благодаря!

  • Найти абсолютный путь из скрипта
  • Какая реальная переменная PATH
  • Как использовать библиотеки, установленные nix во время выполнения?
  • Измените каталог по умолчанию для одной конкретной программы, не изменяя ее путь
  • Добавить путь в $ PATH глобально для каждого пользователя
  • Скрипт, чтобы просмотреть папки $ PATH и посмотреть, какие исполняемые файлы доступны в вашей системе
  • Где Debian 8.1 устанавливает adduser?
  • Unix устанавливает лучшие практики, присоединяется к пути или через
  • 2 Solutions collect form web for “Полный вид того, где переменная PATH задана в bash”

    Есть много мест, где можно установить PATH .

    Программа login устанавливает значение по умолчанию. Как настроено это значение по умолчанию, зависит от системы. На большинстве не встроенных систем Linux он берется из /etc/login.defs с разными значениями для root и для других пользователей. Обратитесь к руководству login(1) в вашей системе, чтобы узнать, что он делает.

    В системах, использующих PAM , в pam_env модуль pam_env , переменные окружения могут быть установлены в общесистемном файле /etc/environment и в файле пользователя ~/.pam_environment .

    Тогда большинство способов входа в систему (но не заданий cron) выполняют оболочку входа в систему, которая считывает файлы конфигурации системы и каждого пользователя. Эти файлы могут изменять значение PATH , как правило, для добавления записей, но иногда другими способами. Какие файлы читаются, зависит от того, что такое оболочка входа. Оболочки Bourne / POSIX читают /etc/profile и ~/.profile . Bash читает /etc/profile , но для файла для каждого пользователя он только считывает первый существующий файл из ~/.bash_profile , ~/.bash_login и ~/.profile . Zsh читает /etc/zshenv , ~/.zshenv , /etc/zprofile , ~/.zprofile , /etc/zlogin и ~/.zlogin . Многие сеансы графического интерфейса организуют загрузку /etc/profile и ~/.profile , но это зависит от диспетчера дисплея, от среды рабочего стола или другого сценария запуска сеанса и того, как каждый дистрибутив настроил их.

    Первоначальная переменная PATH обычно устанавливается в /etc/profile Иногда администратор sys также помещает переменные PATH в исходный код в /etc/profile.d

    Это системные PATH vars, которые каждый, кто входит в систему, наследует по умолчанию (если не переопределяется локально). Обычно это устанавливает очевидные пути, такие как /usr/bin , хотя на моей работе мы широко используем /opt и несколько пользовательских мест, поэтому они также установлены там.

    В учетных записях для каждого пользователя PATH также может быть определен в файле ~/.profile . Это может определять вещи, к которым не все пользователи имеют доступ; возможно, руководители отделов могут запускать двоичные файлы из /opt но другие пользователи не беспокоятся об этих двоичных файлах. Пользователи также могут сами изменить этот файл, и хорошая вещь о .profile заключается в том, что он не зависит от оболочки; если вы входите в систему, установленный PATH получает источники.

    Для локусов, специфичных для оболочки, PATH может быть определен в ~/.bash_profile , ~/.bashrc или .cshrc или аналогично. Пользователи могут устанавливать PATH здесь, если им нужны конкретные пути для определенных оболочек или если они просто поддерживают все свои личные предпочтения.

    В итоге: / etc / profile и /etc/profile.d традиционно являются каскадными настройками; они наследуются и обычно добавляются в личные точечные файлы (хотя пользователь может выбрать вместо них переопределение). Персональные точечные файлы обычно устанавливаются пользователем.

    Конечно, оболочка также имеет переменные окружения, поэтому локальная переменная среды также может добавлять или переопределять PATH по умолчанию в любом из файлов конфигурации.

    Linux и Unix - лучшая ОС в мире.