Я немного почитал о запуске Linux и т. д. и заметил, что в моем домашнем каталоге нет папки profile.d
:
/home/user/profile.d/ # Doesn't exists
и ни файл .bash_profile
:
/home/user/.bash_profile # Doesn't exists
Для этого есть причина?
Ubuntu 15.04, гном
решение1
Короткий ответ:это нормально, так что.
Существует множество файлов инициализации пользователя, поскольку пользователь может решить войти в учетную запись компьютера многими различными способами, с консоли, с интерактивной или неинтерактивной оболочкой, с различными типами оболочек. Это не прерогатива всех пользователей, но с необходимостью поддерживатьОбратная совместимостьон закончил усложнятьнемноговещи. :-)
Каталог
profile.d
не должен находиться в вашем домашнем каталоге:
/etc/profile.d
содержит скрипты с файлами запуска, специфичными для приложений, которые также выполняются во время запуска оболочкой. Это каталог, действительный для всех пользователей, для этого он создается под путем/etc/
, а не под домашним каталогом каждого отдельного пользователя.Файл
~/.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
источнику.
Ссылка:
- В руководстве Bash (не очень) для начинающих раздел оФайлы инициализации оболочки
- Почему в Ubuntu файл ~/.profile по умолчанию использует ~/.bashrc?