4

Пользователь bash в конечном итоге получит .bashrc , .bash_profile , .profile и, возможно, еще кое-что.

Теперь каждый файл загружается в определенных ситуациях, и все это приводит к путанице и разочарованию. Меня не волнует, какая оболочка является оболочкой входа в систему, и вы не должны.

Я просто хочу убедиться, что одна и та же вещь загружается для каждой происходящей оболочки.

Итак, каков разумный способ их настроить?

Я бы поспорил, что вещи, не относящиеся к bash, идут в .profile , а некоторые исходные файлы - в другие, и т.д. Что именно нужно добавить в каждый из них, чтобы добиться идентичной среды для каждой оболочки?

Примечание: я не спрашиваю, что вам особенно нравится помещать в ваши rc-файлы, например, псевдонимы и функции и так далее. Точно так же, как вы их выкладываете так, чтобы между ними не было случайного слияния.

2 ответа2

4

Я просто хочу убедиться, что одна и та же вещь загружается для каждой происходящей оболочки.

Если вы действительно этого хотите, поместите все в ~/.profile и добавьте исходный файл ~/ source ~/.profile в конце вашего ~/.bashrc. Если это желательно, это другой вопрос. Исходный ~/.profile в ~/.bashrc в любом случае является очень распространенной настройкой.

+------------+-----------------+--------------------+
|            | login shells    | interactive shells |
+------------+-----------------+--------------------|
| all        | /etc/profile    |                    |
| bourneish  | ----------------+--------------------|
| shells     | ~/.profile      |                    |
+------------+-----------------+--------------------|
| just       | ~/.bash-profile | /etc/bash.bashrc   |
|            | -------------------------------------|
| bash       | ~/.bash-login   | ~/.bashrc          |
+------------+-----------------+--------------------+

Оболочка C и производные оболочки используют другой набор файлов (.login, .cshrc, ..).

Что именно должно быть в каждом из них, чтобы создать одинаковую среду для каждой оболочки?

Если вы имеете в виду окружение в смысле переменных окружения, просто установите все из них в ~/.profile, и все в порядке. Если вы имеете в виду среду в более широком смысле, это зависит.

Проблема здесь в том, что нежелательно иметь одинаковую среду для интерактивных оболочек и оболочек входа в систему. Примером могут служить псевдонимы: возможно, вам нужны псевдонимы в вашей интерактивной оболочке, но очень вероятно, что они заставят ваши скрипты делать странные вещи. Таким образом, вы не хотите, чтобы ваши псевдонимы в неинтерактивных оболочках => помещали их в ~./bashrc .

0

Я исправляю вещи так, что почти все мои настройки выполняются с помощью оболочки входа в систему и почти ничего на основе каждой оболочки. Это означает, что мой файл .profile является сложным; Мой файл .kshrc (аналог .bashrc для Bash и .cshrc для оболочки C) не существует. Я никогда не считал это проблемой. Это также означает, что не входящие в систему оболочки являются настолько быстрыми, насколько это возможно - они не копаются в файлах для анализа команд, которые они не будут использовать. Это может быть похмелье со времен оболочки Bourne - когда не было сценариев для каждой оболочки. Но я никогда не находил ничего такого, что требовало бы такого специализированного лечения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .