Чим відрізняється ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc…?


68

Відповіді на запитання щодо 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)
  • Яка корисна орієнтир для цього класу файлів? Для параметрів у цих файлах?

Пов'язані питання


3
Дивіться INVOCATIONрозділ в man bash. Дивіться FHSстаттю wiki про файлові системи Linux. Це дасть вам добрий початок і відповість на пару цих питань. Файли з попередньою крапкою ( .), як правило, залежать від користувача - вони знаходяться в $HOMEкаталозі користувача.

3

@ IgnacioVazquez-Abrams Я не шукаю деталей, а лише загальний опис того, як вони співвідносяться і коли слід використовувати один інший.
Абе

Відповіді:


48

Організація файлів конфігурації набагато менш рівномірна, ніж, мабуть, передбачають ваші запитання. Немає "класу", немає "ієрархії", і немає глобального "царя конфігурації", ні комітету, який постановляє загальний синтаксис або інші приємні чисті узагальнення, як ті, що ви шукаєте. Існує лише безліч окремих додатків , таких як R, bash, screenі робочий стіл GNOME навколишнього середовища, всі з яких мають свої власні способи ведення справ, так що ви повинні дивитися на документацію для кожної окремої програми , щоб відповісти на будь-які конкретні питання конкретного файлу. Якщо це здається тимчасовим, це тому, що це так: більшість програмного забезпечення Unix / Linux там розроблені для різних цілей різними людьми, які конфігурували трохи по-різному.

Щоб відповісти на ваші інші запитання в точності:

  • *rcі *profileце не дуже значить, тому на це питання насправді не можна відповісти. "rc" - це просто поширена абревіатура або суфікс для файлів конфігурації. Етимологія його відноситься до найдавніших часів (у комп’ютерні роки) і, ймовірно, означає команди запуску (від runcom ). Тільки тому, що програми використовують одне і те ж слово, це не означає, що вони згодні з умовами. "профіль" - набагато рідше суфікс.

  • Визначте "сферу". Більшість програм не діляться файлами конфігурації з іншими не пов'язаними програмами. Єдиним можливим винятком є /etc/profileі .profile, який може використовуватися декількома різними оболонками (включаючи принаймні shта bash). З кожним запущеним процесом існує щось, що називається середовищем, яке може містити змінні, які можуть впливати на поведінку зазначеного процесу. Як правило, змінні середовища встановлюються відповідними файлами конфігурації оболонки або, можливо, файлами конфігурації будь-якого графічного середовища робочого столу, яке ви використовуєте. Існують також файли конфігурації для "бібліотек", як .inputrcдля readline та .gtkrc*GTK, які впливатимуть на кожен додаток, який використовує бібліотеку.

  • Ні, немає глобальної ієрархії файлів конфігурації. Знову зверніться до документації для конкретної програми, про яку йдеться, наприклад, bashпосібник для bash. Загальна конвенція, на яку зазвичай можна покластися, полягає в тому, що налаштування користувачів у $HOMEконфігурації загальної системи в /etc. Зазвичай це досягається зчитуванням файлу користувача після системного, щоб пізніші налаштування замінили попередні. Однак це не є гарантією, і для остаточних відповідей слід звернутися до документації для конкретної програми, яку ви використовуєте.

  • Не існує "класу", принаймні жодного загального, щоб охопити всі файли, які ви вказали у своєму запитанні, тому питання посилання на такий "клас" є суперечливим. Знову зверніться до документації конкретної програми, яку ви використовуєте.


5

Я думаю, що це питання занадто широке на стільки рівнях, наприклад, ви задаєте питання про щонайменше чотири різні програми в одному питанні. Я розгляну лише різницю між файлами конфігурації в /etcі $HOME.

Unix є операційною системою на багато користувачів, це означає , що багато різні люди можуть використовувати систему, або за допомогою ssh, telnetабо Xorg. Щоб забезпечити стандартизовану конфігурацію для своїх користувачів, ви можете надати конфігурацію для всієї системи /etc/, як правило, також ваш дистрибутив використовується для надання глобальної конфігурації для, наприклад, bashабо screen.

З іншого боку, деякі користувачі хочуть самостійно налаштувати параметри для своїх програм, як клавіші, кольори або зовнішній вигляд. Це робиться через файл конфігурації в їх $HOME. Отже, коротко кажучи, /etc/надається конфігурація для всієї системи, тоді як конфігураційні файли в $ HOME дозволяють користувачам змінювати / змінювати конфігурацію для системи.


3

Частина відповіді приходить з цього повідомлення :

.bashrc це скрипт оболонки, який Bash запускається кожного разу, коли він запускається інтерактивно.

Контраст .bash_profileі .profileякі запускаються лише на початку нової оболонки входу. (bash -l)

Ви вибираєте, чи входить команда в .bashrcпорівнянні з .bash_profileзалежністю від того, чи хочете ви її запустити один раз або для кожного інтерактивного запуску оболонки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.