Чим відрізняється ~ / .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.