Che cos'è un file .bashrc e cosa fa?


21

Non riesco a trovare informazioni chiare su cosa sia il .bashrcfile e cosa faccia esattamente.


Grazie per tutto l'aiuto finora. Sembra che questo script faccia tutto da colorare, completamento, alias e cronologia delle shell, ecc. C'è qualcosa che non sembra utile?


4
.bashrcè uno dei molti file di configurazione di Bash. Consulta la documentazione ufficiale sui file di avvio di Bash .
muru,

Risposte:


21

Il .bashrcfile è 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_profilescript. Questo è ciò che accade, ad esempio, quando si accede a un sistema remoto tramite SSH.

Il .bashrcfile 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 .bashrcfile distribuito con Ubuntu è ben commentato e sarai in grado di capire la maggior parte di ciò che fa semplicemente leggendolo.

Puoi modificare .bashrca tuo piacimento. Qui puoi ottenere un esempio con molte funzionalità extra.


Il collegamento è interrotto.
rab

1
Il collegamento funziona.
Luís de Sousa,

In quella pagina il file di download non funziona.
rab

1
Sia il collegamento che il download funzionano correttamente
M. Becerra,

5

Domanda su superutente - Qual è il file .bashrc? da @pineapple e risposto da @DigitalRoss

In realtà, è bashspecificamente 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' --rcfileopzione 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_ENVnell'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 PATHvariabile 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 .profileviene utilizzato per questo scopo, ma bashha 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 e BASH_ENVsolo 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è davvero bash, 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. bashPenso 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.

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.