В чем разница между ~ / .profile и ~ / .bash_profile?

Ответы:

44

.profileБыла исходная конфигурация профиля для Bourne оболочки ( так называемый, sh). bashБудучи совместимой с Bourne, оболочка будет читать и использовать ее. С .bash_profileдругой стороны, только для чтения bash. Он предназначен для команд, которые несовместимы со стандартной оболочкой Bourne.

bahamat
источник
Если я ошибаюсь, поправьте меня ... .profile используется любой Bourne-совместимой оболочкой, тогда как .bash_profile используется только bash ... я прав?
Lakesh
2
@lakesh: Да, любая оболочка, обеспечивающая совместимость с Борном, будет читать .profile. Например, bashи , kshно не cshили tcsh. И zshобеспечивает как shи cshсовместимость , так что будет читать как .profileи .login, а также zshконкретные точечные файлы.
Багамат
Есть ли учебник, чтобы прочитать об этом bash и ksh? никогда не слышал об этом раньше ...
Lakesh
4
Вы можете начать с UNIX Shell History .
Багамат
25

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

bash.bash_profileсначала попытается найти источник , но если его не существует, он получит источник .profile1 .

Обратите внимание, что если bashон запускается как sh(например, /bin/shссылка на /bin/bash) или запускается с --posixфлагом, он пытается эмулировать shи только читает .profile.

Примечания:

  1. На самом деле, первый из .bash_profile, .bash_login,.profile

Смотрите также:

Mikel
источник
2
Круто .. Спасибо ... особенно за ссылки ...
Lakesh
10

Вы знаете, что в мире UNIX существует много оболочек, но большинство из них:

  • Оболочка Борна : /bin/sh(Изобретатель: Стивен Борн)
  • BASH (Bourne Again Shell): /bin/bash(Изобретатель: Брайан Фокс, в рамках проекта GNU) (мощная оболочка)
  • Оболочка C : /bin/csh(Изобретатель: Билл Джой, Изобретатель стека TCP / IP)
  • Оболочка Корна : /bin/ksh(Изобретатель: Дэвид Корн под Bell Labs)
  • Z shell : /bin/zsh(Мощная оболочка)
  • Оболочка TENEX C : /bin/tcsh(производная от C Shell)
  • Оболочка Debian Almquist : /bin/dash(Производная от оболочки Almquist (пепел в рамках проекта NetBSD)) (Черта, рожденная от Ленни)

Но ваш вопрос о ~/.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в bash

Вы можете установить переменную $histfileкак имя файла истории и переменную $historyкак количество сохраняемых команд.

Z shell

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

За исключением другой оболочки, оболочка 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

Bourne Again Sheell (BASH)

Это очень мощная оболочка, созданная в рамках проекта GNU и разветвленная Bourne Shell.

~/.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работать под Bash, но ~/.profileработать под Bourne и Korn.

PersianGulf
источник
2
Чет Рами был главным разработчиком для Bash.
tripleee
4

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

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

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

anzenketh
источник
разница между ~ / .profile и ~ / .bash_profile?
Lakesh
2
.profile предназначен для вещей, которые не связаны конкретно с Bash, например, для переменных среды PATH он также должен быть доступен в любое время. .bash_profile специально для оболочек входа в систему или оболочек, выполняемых при входе в систему.
anzenketh
добавьте это утверждение к вашему ответу .... потому что это мой вопрос ...
Lakesh
А? Это даже не отвечает на вопрос?
Микель