1

Я кое-что прочитал при запуске Linux и т.д. И заметил, что в моем домашнем каталоге нет папки profile.d:

/home/user/profile.d/ # Doesn't exists

и ни файл .bash_profile:

/home/user/.bash_profile # Doesn't exists

Для этого есть причина?

Ubuntu 15.04, гном

1 ответ1

0

Короткий ответ: это нормально, так.

Существует много пользовательских файлов инициализации, потому что пользователь может решить войти в учетную запись компьютера по-разному, с консоли, с интерактивной или неинтерактивной оболочкой, с различными типами оболочек. Это не является прерогативой всех пользователей, но с необходимостью сохранить обратную совместимость он закончил , чтобы немного усложнить вещи. :-)

  • Каталог profile.d не должен находиться в вашем домашнем каталоге:
    /etc/profile.d содержит сценарии со специфичными для приложения файлами запуска, которые также выполняются оболочкой во время запуска. Это каталог, действительный для всех пользователей, для этого он создается в /etc/ path, а не в каждом домашнем каталоге каждого пользователя.

  • Файл ~/.bash_profile является одним из личных файлов инициализации и, когда он существует, хранится в каждом доме пользователя. Но это не нужно, что он существует. Он должен содержать специфичные для bash команды, запускаемые при запуске оболочки входа в систему (~/.profile может быть прочитан из разных оболочек, которые обычно понимают синтаксис, отличный от синтаксиса bash).


Читая больше из раздела INVOCATION man bash

Когда bash вызывается как интерактивная оболочка входа в систему (...), она сначала читает и выполняет команды из файла /etc/profile, если этот файл существует.
После прочтения этого файла он ищет ~/.bash_profile , ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.

Поэтому, если у вас есть файл ~/.bash_profile он не будет прочитан в ~/.profile , если он не вызван (или не получен) в одном из других файлов.

Обратите внимание, что

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc , если эти файлы существуют.

Из какой-то версии Ubuntu 12 (и наверняка с 13.10) в .profile поставляется ~/.bashrc .

Это может вызвать непредвиденное поведение при запуске оболочек входа в систему (например, когда ssh в компьютер), когда пользователь не ожидает получения ~/.bashrc .

Ссылка:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .