В чем разница между /etc/bash.bashrc и ~ / .bashrc? Какой из них я должен использовать?

20

Когда мне следует использовать каждый из двух файлов .bashrc, чтобы установить псевдонимы, подсказки и т. Д.?

cfischer
источник

Ответы:

34

/etc/bash.bashrc относится ко всем пользователям

~/.bashrc применяется только к пользователю, в котором он находится.

Лоик Вольф
источник
3
В ответе Декса подразумевается ... Используйте ваш локальный ~ / .bashrc во всех случаях, кроме случаев, когда вы хотите применить свою волю ко всем, кто использует эту машину.
Дакракот
Строго говоря, вы ничего не применяете в /etc/bash.bashrc, потому что пользователи всегда могут изменить это в своих собственных ~ / .bashrc
Ким
... за исключением случаев, когда кто-то решает внести все переменные readonlyв /etc/bash.bashrc: \
grawity
1
В Ubuntu этот файл, как отмечалось в начале, должен быть "получен" из файла / etc / profile. Я добавил команду псевдонима в конец /etc/bash.bashrc и добавил команду «source /etc/bash.bashrc» в конец файла / etc / profile. Работает как шарм.
jfmessier
2

Согласно документации GNU Bash :

Когда Bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile , если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile , ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция --noprofile может использоваться, когда оболочка запущена, чтобы запретить это поведение.

Вызывается как интерактивная оболочка без входа в систему. Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, Bash читает и выполняет команды из ~ / .bashrc , если этот файл существует. Это может быть запрещено с помощью параметра --norc. Опция --rcfile file заставит Bash читать и выполнять команды из файла вместо ~ / .bashrc.

Итак, обычно ваш ~ / .bash_profile содержит строку

if [-f ~ / .bashrc]; тогда . ~ / .Bashrc; фи

после (или до) любых специфичных для входа инициализаций.

Фелипе Альварес
источник
1
На самом деле, нет. Посмотрите на этот файл git.savannah.gnu.org/cgit/bash.git/tree/shell.c в функции run_startup_files (), где используется SYS_BASHRC, определенной в git.savannah.gnu.org/cgit/bash.git/. tree / config-top.h
mloskot
1

Для ваших личных предпочтений и личных сценариев или функций bash вы должны использовать .bashrc (псевдонимы, добавлены функции для bash ...)

В тот момент, когда вы хотите поделиться чем-то со всеми пользователями (или большинством пользователей) или для вещей общего пользования (путь для общих исполняемых файлов, путь для документации ...), поместите это в /etc/bash.bashrc

Я сказал большинству пользователей, потому что даже допустим, вы указываете скрипт greetings.sh, который печатает "Hello world!"для всех пользователей, но пользователь Pepe хочет использовать вместо него скрипт greetings.sh, который печатает "Hola el mundo!". Он может изменить свой путь в своем .bashrc, чтобы он указывал на свой сценарий вместо вашего. Другими словами, пользователь всегда может настроить свою сессию в .bashrc так, как он хочет.

дебаггер
источник