Почему есть и .bash_profile, и .bashrc? [дубликат]

Если на вашем сервере резервного копирования есть ssh, используйте scp для копирования файлов, например

scp -r /src/folder user@server:/path/

(флаг -r для копирования всего каталога вместо одного)

2
20.02.2017, 18:34
1 ответ

Только .bashrc запускается в оболочках без входа в систему, в то время как только .bash_profile выполняется в оболочках входа.

.bashrc обычно должен содержать вещи, которые вы хотите установить в каждой открываемой оболочке, например псевдонимы, функции и т. Д. Это элементы сеанса оболочки, которые не наследуются от среды.

.bash_profile должен содержать вещи, которые нужно определять только во время входа в систему, например PATH и другие переменные среды, программы запуска и т.д. В большинстве случаев вам также понадобятся вещи из .bashrc в вашей оболочке входа в систему. Вот почему .bash_profile исходники .bashrc также, но .bashrc обычно не источник .bash_profile .

/ etc / bashrc и / etc / profile - это общесистемные настройки, сделанные системным администратором или менеджером пакетов. / etc / profile создается автоматически в каждой оболочке входа в систему, до ~ / .bash_profile . / etc / bashrc не является источником, поэтому его необходимо получить из ~ / .bashrc , когда это необходимо.

Теперь вы можете объединить два файла в один и связать другой файл с первым. Но вы должны убедиться, что PATH и другие переменные не определены относительным образом (например, PATH = $ HOME / bin: $ PATH), иначе они будут просто бесполезно увеличиваться. Кроме того, вы должны быть осторожны с повторным запуском программ. Просто эти двое проще разделить.

Соответствующий раздел на странице руководства bash:

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

Когда оболочка входа завершается, bash читает и выполняет команды из файла ~ / .bash_logout, если он существует.

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

11
27.01.2020, 21:51

Теги

Похожие вопросы