GNU/Linux >> Linux Esercitazione >  >> Linux

Quali sono le differenze funzionali tra .profile .bash_profile e .bashrc

Soluzione 1:

.bash_profile e .bashrc sono specifici di bash , mentre .profile viene letto da molte shell in assenza dei propri file di configurazione specifici della shell. (.profile era usato dalla shell Bourne originale.) .bash_profile o .profile viene letto dalle shell di login, insieme a .bashrc; le subshell leggono solo .bashrc . (Tra il controllo del lavoro e i moderni sistemi a finestre, .bashrc di per sé non si usa molto. Se usi screen o tmux , schermate/finestre di solito eseguono subshell invece di shell di login.)

L'idea alla base di questo era che la configurazione una tantum fosse eseguita da .profile (o la sua versione specifica della shell) e roba per shell di .bashrc . Ad esempio, generalmente vuoi caricare le variabili d'ambiente solo una volta per sessione invece di farle colpire ogni volta che avvii una subshell all'interno di una sessione, mentre vuoi sempre i tuoi alias (che non vengono propagati automaticamente come lo sono le variabili d'ambiente).

Altri importanti file di configurazione della shell:

/etc/bash_profile (riserva /etc/profile ) viene letto prima del .profile dell'utente per la configurazione a livello di sistema, e allo stesso modo /etc/bashrc nelle subshell (nessun fallback per questo). Molti sistemi, incluso Ubuntu, usano anche un /etc/profile.d directory contenente gli scriptlet della shell, che sono . (source )-ed da /etc/profile; i frammenti qui sono per shell, con *.sh applicabile a tutte le shell compatibili con Bourne/POSIX e altre estensioni applicabili a quella particolare shell.

Soluzione 2:

.profilo

.profile è per cose che non sono specificamente correlate a Bash , come le variabili d'ambiente PATH e amici e dovrebbe essere disponibile in qualsiasi momento.

Ad esempio, .profile dovrebbe essere caricato anche all'avvio di una sessione di desktop grafico.

.bashrc

.bashrc serve per configurare l'uso interattivo di Bash, come Bash aliases , impostando il tuo editor preferito , impostando il Bash prompt , ecc.

.bash_profile

.bash_profile serve per assicurarsi che entrambe le cose in .profile e .bashrc vengono caricati per login shells .

Ad esempio, .bash_profile potrebbe essere qualcosa di semplice come

. ~/.profile
. ~/.bashrc

Se dovessi omettere .bashrc , solo .profile verrebbe caricato.

Soluzione 3:

Secondo la pagina man di bash, .bash_profile viene eseguito per le shell di login, mentre .bashrc viene eseguito per shell interattive non di login.

Quindi, cos'è una shell di accesso o non di accesso?

Quando accedi (digita nome utente e password) tramite console, seduto alla macchina o in remoto tramite ssh:.bash_profile viene eseguito per configurare la tua shell prima del prompt dei comandi iniziale. Ma, se hai già effettuato l'accesso alla tua macchina e aperto una nuova finestra di terminale (xterm) all'interno di Gnome o KDE, allora .bashrc viene eseguito prima del prompt dei comandi della finestra. .bashrc viene eseguito anche quando avvii una nuova istanza bash digitando /bin/bash in un terminale.

Un'eccezione alle linee guida della finestra del terminale è Terminal.app di Mac OS X, che esegue una shell di login per impostazione predefinita per ogni nuova finestra del terminale, chiamando .bash_profile invece di .bashrc . Altri emulatori di terminale GUI possono fare lo stesso, ma la maggior parte tende a non farlo.

Altro qui.


Linux
  1. Quali sono le differenze fondamentali tra il mainstream * nix Shells??

  2. Linux:quali sono le principali differenze tra i sistemi operativi basati su Bsd e Linux?

  3. Quali sono le differenze tra `chattr +i FILE` e `chmod -w FILE`?

  4. Quali sono le differenze tra lsof e netstat su Linux?

  5. Quali sono le differenze tra rdesktop e xfreerdp?

Qual è la differenza tra Linux e Unix?

Quali sono le differenze tra cPanel e WHM?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Quali sono le differenze tra i file .txt Linux e Windows (codifica Unicode)

Qual è la differenza tra ls e l?