Dove si trova il file .bashrc in Linux?


13

Non trovo il mio .bash_login e .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:~# 

Esiste sempre un solo file .bashrc e .bash_profile per ogni utente?

E, .bashrc e .bash_profile si trovano sempre nella directory / home / "nome utente"?

Risposte:


14

Gli unici che bash guarda di default sono nella home directory dell'utente, sì. In genere esiste anche una singola fonte per loro in Linux - / etc / skel. Tuttavia, la directory home dell'utente non deve essere in / home.

Vedo che hai modificato la tua domanda per chiedere dove sono i tuoi file .bash_login e .bash_profile. Sulla base del #prompt, suppongo che lo stai eseguendo come root. In tal caso, i tuoi file sono

/root/.bash_history
/root/.bashrc

Vedi la mia risposta originale sopra per quanto riguarda la home directory di un utente - non è sempre / home; in questo caso, la home directory di root è /root.


9

Secondo man bash:

Quando bash viene invocato come shell di login interattiva o come shell non interattiva con l'opzione --login, legge prima ed esegue i comandi dal file / etc / profile, se quel file esiste. Dopo aver letto quel file, cerca ~ / .bash_profile, ~ / .bash_login e ~ / .profile, in quell'ordine, e legge ed esegue i comandi dal primo che esiste ed è leggibile.

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

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

C'è anche /etc/bashrc( /etc/bash.bashrcin Linux basato su Debian) che contiene System wide functions and aliases. Per impostazione predefinita, questo è impostato, anche per shell non interattive, non di accesso.

MODIFICARE:

Il tildenei percorsi indica l' home directoryutente attualmente connesso. Bash è in grado di utilizzare solo uno dei ~/.bash_profile, ~/.bash_login, or ~/.profile(per utente attualmente connesso), in quell'ordine, per leggere ed eseguire i comandi. (I sistemi operativi basati su Debian in genere non hanno ~/.bash_profile or ~/.bash_login. Usano il file ~/.profile. Questo file spiega che verrà letto e usato a meno che non ~/.bash_profile or ~/.bash_loginvengano creati.

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

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


In che modo risponde alla mia domanda?

1
@BROY Risponde alla domanda che avresti dovuto porre piuttosto che a quella che hai fatto.
Shadur,

Ho visto alcune persone mettere un file .bash_profile nelle directory del progetto, viene davvero raccolto da bash? Non penso che dovrebbe accadere per impostazione predefinita.
Alexander Mills,

5

bashrcLa posizione del tuo file dipende dalla distro ... Ecco un elenco di base per il sistema bashrc:
/etc/bashrc(Redhat, Fedora, ecc.)
/etc/bash.bashrc(Debian, Ubuntu, Linux Mint, Backtrack, Kali ecc.)
/etc/bash.bashrc.local(Suse, OpenSuse, ecc.)
Poi c'è il utente singolo privato bashrc, che, per la maggior parte, viene archiviato ~/.bashrcpraticamente per ogni distribuzione ... Se non si dispone di una delle distro elencate o si dispone di un sistema speciale, è sempre possibile cercare la bashrcposizione su Google per quella distribuzione o sistema ...
Saluti,
Interessante ...


1

Come hanno già affermato le persone, puoi trovare uno scheletro di bashrc in /etc/skel/.bashrc. Se utenti diversi desiderano configurazioni bash diverse, è necessario inserire un file .bashrc nella cartella home di tali utenti.

Quando si tratta di .bash_profile e .bash_login, l'utente deve crearli manualmente e collegarli tramite bashrc. bash_profile e bash_login esistono per creare un'atmosfera più organizzata per le diverse impostazioni caricate. Personalmente tengo tutti i miei alias in bash_profile in modo da non dover ordinare un pasticcio in bashrc per effettuare una rapida modifica.

Ecco un esempio di ciò che avresti nel tuo file .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.