Яка різниця між .profile та .bash_profile і чому я не маю .profile файл у своїй системі?


12

Тож я досить новачок у Linux і нещодавно встановила Fedora 19 на своєму нетбуку. Я хочу глибше зрозуміти Linux та CLI, тому я зараз читаю Learn Linux: The Hard Way .

У вправі 3 автор дає такі команди:

  • ls -al
  • cat .profile

Я намагаюся слідувати цим інструкціям, але безрезультатно. У моєму каталозі імен користувачів немає .profile-файлу, як я бачу з ls -al. З того, що я дізнався, файл .bash_profile і .profile практично однаковий. Єдиною різницею, яку я зробив у своїх дослідженнях, є те, що .bash_profile перевіряється спочатку.

Я не розумію, чому в Linux є кілька файлів для однієї і тієї ж функції, чому автор використовує .profile, а не .bash_profile (якщо я правильно розумію .profile не буде прочитаний, коли система знайде спочатку .bash_profile) і як виходить, що у мене немає файлу .profile у моїй системі?


Дивіться також unix.stackexchange.com/questions/45684/…, який відповідає на ваше запитання. Крім того, unix.stackexchange.com/questions/67940/… показує одну з причин, чому ці різні файли можуть призвести до плутанини для більш досконалих матеріалів, ніж ви, мабуть, маєте справу ще.
msw

Відповіді:


13

В .profileсходить до оригінальної оболонці Борна , відомої як sh. Оскільки оболонка GNU bashє (залежно від її можливостей) надмножиною оболонки Bourne, обидві оболонки можуть використовувати один і той же файл запуску. Тобто за умови, що shвводяться лише команди.profile

Наприклад, aliasце дійсна вбудована команда, bashале невідома sh. Тому, якби у вас був лише .profileдомашній каталог і виклали aliasв нього заяву, shскаржилися б. Отже, існує специфічний файл bash, який має команди ініціалізації оболонок, які bash будуть читатись тоді і лише тоді, коли .profileфайлу немає.

Насправді це трохи спрощено в деяких установках, і я не знайомий з Fedora. Під bash /etc/profileчитається оболонка перед будь-якими файлами у вашому домашньому каталозі. Якщо існує сценарій ініціалізації, який є загальносистемним, він часто говорить щось подібне

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Чому саме так? Спроба сумісності протягом десятиліть оболонок діалектів. Чому підручник написаний саме так? Оболонку Борна вже не дуже часто використовують, і деякі люди навіть не знають, що існує інша оболонка, що нагадує Борну, ніж баш. Навіть коли синтаксис Bourne (обмежений) використовується для більшої сумісності між платформами, його часто запускають dashабо б'ють в режимі сумісності POSIX. Дійсно, власне джерело оболонки Bourne, ймовірно, є компонентом авторських прав Unix System V, який, як видається, є власністю Novell зараз, але я не маю уявлення, що, якщо що, вони роблять з цим.

Для початківців, використання або $HOME/.profileчи , $HOME/.bash_profileале не так , і ви будете в порядку. Оскільки у вас вже є .bash_profileробота з цим, тому що в ньому можуть бути специфічні для системи речі, необхідні вашій установці.


Спасибі! Я думаю, що зараз я це розумію трохи краще, але я маю багато чого навчитися.
Емірое

Багато з цього є історичним сміттям, яке вам насправді не потрібно знати; просто зосередимося на останньому абзаці моєї відповіді. Крім того, оскільки ви тут новачок, ви можете підтримати та прийняти відповідь, яка є найвищою формою подяки.
msw

Так, я вже прийняв вашу відповідь. Я не очікував, що хтось докладе так багато зусиль, тому я дуже вдячний. Я прийняв вашу відповідь, але не можу її озвучити, бо вимагає 15 репутації, а у мене всього 8. Тож шкода за це!
Емірое

Я забув про обмеження 15 повторень; право ти.
msw

4
Історичний бонус №1 : справжня оборона Борна нарешті вирвалася з полону. minnie.tuhs.org має повний вихідний код V7 (перший випуск Unix із оболонкою Bourne), а heirloom.sourceforge.net має дещо більш нову версію оболонки Bourne, яка все ще є фактично корисною. Бонус за історію №2 : aliasвимагається POSIX, тому shнавколо небагато людей, які не знають про це.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.