Чим відрізняється ~ / .profile від ~ / .bash_profile?


58

У чому різниця між ~/.profileі ~/.bash_profile?



1
А для іншої частини вашого питання дивіться unix.stackexchange.com/questions/3052/alternative-to-bashrc
"SO- перестаньте бути злим"

Відповіді:


44

Це .profileбула оригінальна конфігурація профілю для оболонки Bourne (ака, sh). bash, будучи сумісною з Bourne оболонкою, буде читати та використовувати її. З .bash_profileіншого боку читається лише bash. Він призначений для команд, несумісних зі стандартною оболонкою Bourne.


Якщо я помиляюся, виправте мене ... .profile використовується будь-якою сумісною оболонкою Bourne, тоді як.
озеро

2
@lakesh: Так, будь-яка оболонка, що забезпечує сумісність з Bour, буде прочитана .profile. Наприклад, bashі , kshале не cshабо tcsh. І zshнадає shі cshсумісність, і вона буде читати як .profileі .login, так і zshконкретні файли з крапками.
Багамат

Чи є підручник, який потрібно прочитати на цьому матеріалі bash і ksh? ніколи раніше про них не чув ...
озера

4
Ви можете почати з історії оболонок UNIX .
Багамат

25

Оригінал shпоставлений .profileпід час запуску.

bash.bash_profileспершу спробує джерело , але якщо цього не існує, він буде джерелом .profile1 .

Зауважте, що якщо bashзапускається як sh(наприклад /bin/sh, посилання на /bin/bash) або починається з --posixпрапора, він намагається імітувати shта читає лише .profile.

Виноски:

  1. На насправді, перший з .bash_profile, .bash_login,.profile

Дивитися також:


2
Дивовижне .. Дякую ... особливо за довідки ...
lakesh

10

Ви знаєте, що багато снарядів існує у світі UNIX, але більшість з них:

  • Оболонка Борна : /bin/sh(Винахідник: Стівен Борн)
  • BASH (Bourne Again Shell): /bin/bash(Винахідник: Брайан Фокс, за проектом GNU) (потужна оболонка)
  • Оболонка C : /bin/csh(Винахідник: Білл Радість, Винахідник TCP / IP стека)
  • Шкаралупа Korn : /bin/ksh(Винахідник: Девід Корн в Bell Labs)
  • Z оболонка : /bin/zsh(Потужна оболонка)
  • Оболонка TENEX C : /bin/tcsh(походить від C Shell)
  • Оболонка Debian Almquist : /bin/dash(Отримана з оболонки Almquist (зола в рамках проекту NetBSD)) (Деш народився від lenny)

Але ваше питання стосується ~/.bash_profileта ~/.profile:

Коли ви входите на машину UNIX, вона переспрямовує на ваш домашній каталог відповідно до оболонки, обраної адміністратором в останньому полі, /etc/passwdнаприклад:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

Оболонка працює, і за замовчуванням кожна оболонка має набір файлів для loginта logout. Коли ви увійти на баш, ~/.profileзапускається і коли logout, ~/.bash_logoutзапускається. ~/.bash_historyфайл зберігає вашу команду введення.

Файл ініціалізації в кожній оболонці

Оболонка TENEX C

  • ~/.login Коли ви ввійдете в систему
  • ~/.logout Під час виходу з системи
  • ~/.tcshrcте саме, що і ~./bashrcв баші

Ви можете встановити змінну $histfileяк ім'я файлу історії та змінну $historyяк кількість команд для зберігання.

Z оболонка

Дійсно, це потужна оболонка, і якщо ви отримаєте вільний час, не забудьте перейти до неї.

За винятком інших оболонок, Z оболонка має багато файлів конфігурації та файлів ініціалізації, я просто пишу:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Примітка: якщо не $ZDOTDIRвстановлено, домашній комплект

C оболонка

Примітка: оболонка TENEX C була роздвоєна з оболонки C. Підтримка оболонки C BSD. Якщо ви знайомі з мовою програмування на С, вам має бути зручно, оскільки його синтаксис схожий.

~/.login
~/.cshrc
~/.logout

Примітка: csh старий. Використовуйте замість tcsh.

Корн Шелл

  • ~/.profile
  • rc-файл: визначено користувачем
  • файл виходу: N / A

Борн знову Шелл (BASH)

Це дуже потужна оболонка, яка народилася за проектом GNU та роздвоєна Борном Шеллом.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

Коли ви входите в систему, bash працює ~/.bash_profileі ~/.bash_profileпрацює ~/.bashrc. Насправді ~/.bashrcце не файл ініціалізації bash, тому що bash не запускає його.

Оболонка Борна

Він мертвий. Навіть коли ви користуєтесь man sh, ви бачите посібник із dash. [Примітка редактора: деталь стосується dashлише дистрибутивів на базі Debian та Debian, таких як Ubuntu.]

Ваша відповідь

~/.bash_profileробота під басом, але ~/.profileробота під оболонкою Борна та Корна.


2
Chet Ramey був головним розробником для Bash.
трійка

4

Оболонка для входу - це просто оболонка, на яку можна ввійти, як через неї ssh, так і на консолі. Оболонка без входу в систему - оболонка, в яку хтось теж не може ввійти. Оболонка без входу часто використовується програмами / системними службами.

Щодо третього моменту. Це правда .bashrc, виконується на кожному екземплярі оболонки. Однак .bash_profileвикористовується лише після входу. Таким чином, причина двох окремих файлів.

.profileдля речей, які не стосуються конкретно Bash, як змінні середовища $ PATH, вони також повинні бути доступні в будь-який час. .bash_profileспеціально для оболонок для входу або оболонок, виконаних під час входу.


різниця між ~ / .profile та ~ / .bash_profile?
озеро

2
.profile призначений для речей, які не стосуються конкретно Bash, як змінні середовища PATH, вони також повинні бути доступні в будь-який час. .bash_profile спеціально для оболонок для входу або оболонок, виконаних під час входу.
anzenketh

додайте це твердження до своєї відповіді .... тому що моє питання ....
lakesh

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