Gdzie znajduje się plik .bashrc w systemie Linux?

14

Nie mogę znaleźć mojego .bash_login i .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:~# 

Czy zawsze jest tylko jeden plik .bashrc i .bash_profile dla każdego użytkownika?

I czy .bashrc i .bash_profile zawsze znajdują się w katalogu / home / „nazwa użytkownika”?

Jeff Schaller
źródło

Odpowiedzi:

15

Jedynie te, które domyślnie ogląda bash, znajdują się w katalogu osobistym użytkownika, tak. W Linuksie jest zazwyczaj jedno źródło - / etc / skel. Katalog domowy użytkownika nie musi jednak znajdować się w katalogu / home.

Widzę, że zredagowałeś swoje pytanie, aby zapytać, gdzie znajdują się twoje pliki .bash_login i .bash_profile. Na podstawie #monitu zakładam, że używasz tego jako root. W takim przypadku twoje pliki są

/root/.bash_history
/root/.bashrc

Zobacz moją pierwotną odpowiedź powyżej dotyczącą katalogu domowego użytkownika - nie zawsze jest to / home; w tym przypadku katalogiem głównym root jest /root.

Jeff Schaller
źródło
10

Według man bash:

Gdy bash jest wywoływany jako interaktywna powłoka logowania lub jako nieinteraktywna powłoka z opcją --login, najpierw czyta i wykonuje polecenia z pliku / etc / profile, jeśli plik ten istnieje. Po odczytaniu tego pliku szuka ~ / .bash_profile, ~ / .bash_login i ~ / .profile, w tej kolejności, i odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.

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

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

Istnieje również /etc/bashrc( /etc/bash.bashrcw Linuksie opartym na Debianie), który zawiera System wide functions and aliases. Domyślnie jest to ustawione, nawet dla nieinteraktywnych powłok, które nie logują się.

EDYTOWAĆ:

tildeW ścieżkach wskazuje home directoryaktualnie zalogowanego użytkownika. Bash może korzystać tylko z jednego ~/.bash_profile, ~/.bash_login, or ~/.profile(na aktualnie zalogowanego użytkownika), w tej kolejności, do odczytu i wykonywania poleceń. (Systemy operacyjne oparte na Debianie zazwyczaj nie ~/.bash_profile or ~/.bash_login. używają pliku ~/.profile. Plik ten wyjaśnia, że ​​będzie on czytany i używany, chyba że ~/.bash_profile or ~/.bash_loginzostanie utworzony.

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

#This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login istnieje.

Timothy Martin
źródło
W jaki sposób odpowiada to moje pytanie?
1
@BROY Odpowiada na pytanie, które powinieneś zadać, a nie na to, które zadałeś .
Shadur
Widziałem, jak niektórzy ludzie umieszczają plik .bash_profile w katalogach projektów, czy to naprawdę jest pobierane przez bash? Nie sądzę, że to powinno zdarzyć się domyślnie.
Alexander Mills,
6

Lokalizacja twojego bashrcpliku jest zależna od dystrybucji ... Oto podstawowa lista dla systemu bashrc:
/etc/bashrc(Redhat, Fedora itp.)
/etc/bash.bashrc(Debian, Ubuntu, Linux Mint, Backtrack, Kali itp.)
/etc/bash.bashrc.local(Suse, OpenSuse itp.)
Następnie jest prywatny pojedynczy użytkownik bashrc, który w przeważającej części jest przechowywany w ~/.bashrczasadzie dla każdej dystrybucji ... Jeśli nie masz żadnej z wymienionych dystrybucji lub masz specjalny system, zawsze możesz wyszukać bashrclokalizację w Google dla tej dystrybucji lub system ...
Pozdrawiam,
ciekawe ...

Ciekawy...
źródło
1

Jak już powiedziano, szkielet bashrc można znaleźć w /etc/skel/.bashrc. Jeśli różni użytkownicy chcą różnych konfiguracji bash, musisz umieścić plik .bashrc w folderze domowym tego użytkownika.

Jeśli chodzi o pliki .bash_profile i .bash_login, użytkownik musi je utworzyć ręcznie i połączyć za pomocą bashrc. bash_profile i bash_login istnieją, aby stworzyć bardziej uporządkowane działanie dla różnych ładowanych ustawień. Osobiście przechowuję wszystkie moje aliasy w bash_profile, więc nie muszę sortować bałaganu w bashrc, aby dokonać szybkiej edycji.

Oto przykład zawartości pliku .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
Peschke
źródło