Risposte:
Il .bashrc
file è uno script che viene eseguito ogni volta che viene avviata una nuova sessione terminale in modalità interattiva . Questo è ciò che accade quando si apre una nuova finestra del terminale premendo Ctrl+ Alt+ To semplicemente si apre una nuova scheda del terminale.
Al contrario, una sessione terminale in modalità login ti chiederà nome utente e password ed eseguirà lo ~/.bash_profile
script. Questo è ciò che accade, ad esempio, quando si accede a un sistema remoto tramite SSH.
Il .bashrc
file stesso contiene una serie di configurazioni per la sessione terminale. Ciò include l'impostazione o l'abilitazione: colorazione, completamento, cronologia della shell, alias dei comandi e altro. Il .bashrc
file distribuito con Ubuntu è ben commentato e sarai in grado di capire la maggior parte di ciò che fa semplicemente leggendolo.
Puoi modificare .bashrc
a tuo piacimento. Qui puoi ottenere un esempio con molte funzionalità extra.
Domanda su superutente - Qual è il file .bashrc? da @pineapple e risposto da @DigitalRoss
In realtà, è
bash
specificamente che legge.bashrc
(e/etc/bash.bashrc
). Ci sono molte conchiglie diverse.La pagina man di bash (di Brian Fox e Chet Ramey; anche la pagina informativa "Bash Startup Files" ) è il riferimento autorevole:
Quando viene avviata una shell interattiva che non è una shell di accesso, bash legge ed esegue i comandi da
~/.bashrc
, se quel file esiste. Questo può essere inibito usando il--norc
opzione. L'--rcfile
opzione file forzerà bash a leggere ed eseguire comandi da file anziché~/.bashrc
.Quando bash viene avviato in modo non interattivo, per eseguire uno script di shell, ad esempio, cerca la variabile
BASH_ENV
nell'ambiente, espande il suo valore se appare lì e utilizza il valore espanso come nome di un file per leggere ed eseguire. Bash si comporta come se fosse eseguito il seguente comando:if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ma il valore della
PATH
variabile non viene utilizzato per cercare il nome del file.Il file è solo comandi di shell. In genere viene utilizzato per modificare i prompt, impostare le variabili di ambiente e definire le procedure della shell. Tradizionalmente, il file
.profile
viene utilizzato per questo scopo, mabash
ha così tante estensioni che ha bisogno del proprio file di avvio per gli utenti che vogliono inserire i bashismi nei file di avvio." Not a login shell " significa cose come l'avvio di script e di solito le finestre dei terminali avviate dai gestori delle finestre. A volte ho impostato i sistemi * nix per avere
.bashrc
eBASH_ENV
solo sorgente.profile
. Finché non ci si allontana dai comandi della shell POSIX, si otterrà la stessa inizializzazione in qualsiasi shell.È particolarmente prezioso quando lo
sh
è davverobash
, cosa che a volte accade. Per fare questo usa:. .profile
Uno dei motivi per cui tutto ciò è così complesso è perché a volte le persone inseriscono elementi che producono output nei file di avvio della shell o impostano incondizionatamente prompt. Ciò causa molti problemi durante l'esecuzione di programmi shell e comandi backtick all'interno delle lingue, per non parlare
system(3)
dei programmi C.bash
Penso che il modo in cui viene avviato abbia un file in cui l'impostazione di output e prompt è OK e un file in cui non lo è. Tradizionalmente, un test di runtime verrebbe eseguito per distinguere l'interattività, ad esempio controllando se il prompt è impostato.
.bashrc
è uno dei molti file di configurazione di Bash. Consulta la documentazione ufficiale sui file di avvio di Bash .