Полный вид того, где переменная 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 через Makefile
  • Есть ли способ добавить каталог в мой PATH в zsh, только если он еще не присутствует?
  • Чтобы иметь Eclipse 4.5 в пути?
  • Как определить, какой исполняемый файл на моем пути будет запущен?
  • Проблема с доступом к .so-библиотекам
  • Почему перезагрузка PATH в команде sudo?
  • Измените каталог по умолчанию для одной конкретной программы, не изменяя ее путь
  • 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 по умолчанию в любом из файлов конфигурации.

    Interesting Posts

    Существует ли стандартная аббревиатура для 'find. -name foo 'или мне нужна функция для этого?

    ldd не найти путь, как добавить

    «Не удалось найти подходящее устройство stage1» при установке Grub вдоль Windows

    Измените фреймбуфер устройства для использования слоя наложения

    Каков канонический способ получения отдельного размера потока в видеофайле?

    Keychain SSH Key Manager предотвращает регистрацию SFTP на CentOS

    Объединение зависимостей со сценариями оболочки

    ssh passwordless не работает для вновь созданного пользователя с помощью команды «useradd»

    Не удается установить xfce4-mixer

    Указатель мыши застрял при входе в систему

    Сед, не дающий первого появления картины

    Откат «Pacman» или исправление исчезнувшей панели задач KDE?

    Средство просмотра изображений для нескольких изображений

    После обновления с Fedora 23 до 25 ps2-клавиатура не переучивается

    ifconfig -a в сценарии оболочки

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