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