Где в Linux находится файл .bashrc?

13

Я не нахожу свои .bash_login и .bash_profile

root@linux:~# locate .bash*
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bashrc.original
/home/noroot/.bashrc
/home/noroot/.bashrc.original
/root/.bash_history
/root/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
/usr/share/kali-defaults/.bashrc
root@linux:~# 

Всегда ли для каждого пользователя есть только один файл .bashrc и .bash_profile?

И всегда ли .bashrc и .bash_profile находятся в каталоге / home / "username"?

Джефф Шаллер
источник

Ответы:

14

Да, по умолчанию bash просматривает только домашний каталог пользователя. В Linux для них также обычно есть один источник - / etc / skel. Домашний каталог пользователя не обязательно должен находиться в / home.

Я вижу, что вы отредактировали свой вопрос, чтобы спросить, где находятся ваши файлы .bash_login и .bash_profile. Исходя из #подсказки, я предполагаю, что вы используете это как root. В этом случае ваши файлы

/root/.bash_history
/root/.bashrc

Смотрите мой оригинальный ответ выше относительно домашнего каталога пользователя - это не всегда / home; в этом случае домашним каталогом root является /root.

Джефф Шаллер
источник
9

По словам man bash:

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

~/.bash_profile
    The personal initialization file, executed for login shells

~/.bashrc
    The individual per-interactive-shell startup file

Существует также /etc/bashrc( /etc/bash.bashrcв Linux на основе Debian), который содержит System wide functions and aliases. По умолчанию это установлено, даже для неинтерактивных оболочек без входа в систему.

РЕДАКТИРОВАТЬ:

В tildeпутях указывается home directoryзарегистрированный в данный момент пользователь. Bash может использовать только одну из них ~/.bash_profile, ~/.bash_login, or ~/.profile(для каждого пользователя, вошедшего в систему) в указанном порядке для чтения и выполнения команд. (Операционные системы на основе Debian, как правило, не имеют. ~/.bash_profile or ~/.bash_login. Они используют файл ~/.profile. Этот файл объясняет, что он будет прочитан и использован, если не ~/.bash_profile or ~/.bash_loginбудет создан.

#~/.profile: executed by the command interpreter for login shells.

#This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login существуют.

Тимоти Мартин
источник
Каким образом это отвечает на мой вопрос?
1
@BROY Это отвечает на вопрос, который вы должны были задать , а не тот, который вы задали .
Шадур
Я видел, как некоторые люди помещали файл .bash_profile в каталоги проектов, действительно ли это воспринимается bash? Я не думаю, что это должно произойти по умолчанию.
Александр Миллс
5

bashrcМестоположение вашего файла зависит от дистрибутива ... Вот базовый список для системы bashrc:
/etc/bashrc(Redhat, Fedora и т. Д.)
/etc/bash.bashrc(Debian, Ubuntu, Linux Mint, Backtrack, Kali и т. Д.)
/etc/bash.bashrc.local(Suse, OpenSuse и т. Д.)
Затем есть частный однопользовательский bashrc, который, по большей части, хранится в ~/.bashrcосновном для каждого дистрибутива ... Если у вас нет одного из дистрибутивов в списке или у вас есть специальная система, вы всегда можете найти bashrcместоположение в Google для этого дистрибутива или система ...
С уважением,
Интересно ...

Интересный...
источник
1

Как уже говорили люди, вы можете найти скелет bashrc в /etc/skel/.bashrc. Если разные пользователи хотят иметь разные конфигурации bash, вы должны поместить файл .bashrc в домашнюю папку этих пользователей.

Когда дело доходит до .bash_profile и .bash_login, пользователь должен создать их вручную и связать их через bashrc. bash_profile и bash_login существуют для создания более организованного ощущения для различных загружаемых вами настроек. Я лично храню все свои псевдонимы в bash_profile, поэтому мне не нужно разбирать беспорядок в bashrc для быстрого редактирования.

Вот пример того, что вы бы имели в своем файле .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
Пешка
источник