Ответы на вопросы по SO и askubuntu , а также просмотр (и чтение заголовков) $HOME
и /etc/
, указывают ряд файлов, которые можно использовать для установки переменных среды, включая:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Я собираю, что файлы в /etc/
работе для всех пользователей, тогда как файлы в $HOME
являются для конкретного пользователя. Я также собираюсь, что .profile
загружается при входе в систему, тогда как .bashrc
загружается, когда /bin/bash
выполняется. Я также понимаю, что разные программы имеют разные файлы настроек (например, .Rprofile
для R). Но я был бы признателен за некоторые разъяснения:
- Существуют
*rc
и*profile
файлы в корне отличается? - Каков объем таких файлов (например, какие файлы обычно используются в Linux)
- Есть ли иерархия (например,
.bashrc
перезаписывает установленные переменные.settings
) - Что является хорошей ссылкой для этого класса файлов? Для вариантов в этих файлах?
INVOCATION
раздел вman bash
. СмотритеFHS
вики-статью о файловых системах Linux. Это даст вам хорошее начало и ответит на пару вопросов. Файлы с предыдущей точкой (.
), как правило, зависят от пользователя - они находятся в$HOME
каталоге пользователя .Ответы:
Организация файлов конфигурации гораздо менее унифицирована, чем могут показаться из ваших вопросов. Нет «класса», нет «иерархии», и нет ни глобального «царя конфигурации», ни комитета, который бы определял общий синтаксис или другие хорошие чистые обобщения, подобные тем, которые вы ищете. Существует лишь множество отдельных приложений , таких как
R
,bash
,screen
и рабочий стол GNOME окружающей среды, все из которых имеют свои собственные способы ведения дел, так что вы должны смотреть на документацию для каждой отдельной программы , чтобы ответить на любые конкретные вопросы конкретного файла. Если это кажется нерегулярным, это потому, что так оно и есть: большая часть программного обеспечения Unix / Linux там была разработана для разных целей разными людьми, которые все настраивали немного по-разному.Чтобы ответить на ваши другие вопросы точечно:
*rc
и*profile
не очень много значат, так что на этот вопрос невозможно ответить. «rc» - это просто часто используемое сокращение или суффикс для файлов конфигурации. Его этимология восходит к древним временам (в компьютерные годы) и, вероятно, означает запуск команд (из runcom ). То, что приложения используют одно и то же слово, не означает, что они согласны с соглашениями. «Профиль» - это гораздо менее распространенный суффикс.Определите «область». Большинство приложений не делятся файлами конфигурации с другими не связанными приложениями. Единственным возможным исключением является
/etc/profile
и.profile
, которое может использоваться несколькими различными оболочками (включая, по крайней мере,sh
иbash
). С каждым запущенным процессом связана среда, которая может содержать переменные, которые могут влиять на поведение указанного процесса. Как правило, переменные среды задаются соответствующими файлами конфигурации оболочки или, возможно, файлами конфигурации любой графической среды рабочего стола, которую вы используете. Существуют также файлы конфигурации для «библиотек», таких как.inputrc
readline и.gtkrc*
GTK, которые влияют на каждое приложение, которое использует библиотеку.Нет, для файлов конфигурации нет глобальной иерархии. Опять же , обратитесь к документации по конкретной программе идет речь, к примеру,
bash
руководство поbash
. Общее соглашение, на которое вы обычно можете положиться, заключается в том, что пользовательские настройки$HOME
переопределяют общесистемную конфигурацию в/etc
. Обычно это достигается путем чтения пользовательского файла после системного, чтобы более поздние настройки перезаписывали более ранние. Однако это не является гарантией, и для окончательных ответов вам следует обратиться к документации по конкретной программе, которую вы используете.Нет «класса», по крайней мере, нет достаточно общего, чтобы охватить все файлы, которые вы указали в своем вопросе, поэтому вопрос о ссылке на такой «класс» спорный. Опять же, обратитесь к документации конкретной программы, которую вы используете.
источник
Я думаю, что этот вопрос слишком широк на многих уровнях, например, вы задаете вопросы по крайней мере о четырех разных программах в одном вопросе. Я только посмотрю на разницу между файлами конфигурации в
/etc
и$HOME
.Unix является операционной системой многопользовательский, это означает , что многие разные люди могут использовать систему, либо с помощью
ssh
,telnet
илиXorg
. Чтобы обеспечить стандартизированную конфигурацию для ваших пользователей, вы можете предоставить общесистемную конфигурацию/etc/
, обычно она также используется вашим дистрибутивом для обеспечения глобальной конфигурации, например,bash
илиscreen
.С другой стороны, некоторые пользователи хотят настроить параметры своих программ по своему усмотрению, такие как сочетания клавиш, цвета или внешний вид. Это делается через файл конфигурации в их
$HOME
. Короче говоря,/etc/
обеспечивает общесистемную конфигурацию, в то время как файлы конфигурации в $ HOME позволяют пользователям изменять / переопределять общесистемную конфигурацию.источник
Часть ответа приходит из этого поста :
.bashrc
скрипт оболочки, который запускается Bash всякий раз, когда он запускается в интерактивном режимеКонтраст
.bash_profile
и.profile
которые запускаются только в начале новой оболочки входа в систему. (Баш-л)Вы выбираете, будет ли команда идти
.bashrc
против, в.bash_profile
зависимости от того, хотите ли вы запустить ее один раз или для каждого запуска интерактивной оболочки.источник