Comprensione .bashrc e .bash_profile [duplicato]


1

Possibile duplicato:
quando devo inserire le configurazioni in .bashrc vs in. .bash_profile?

Sono un n00b quando si tratta di lavorare in ambiente Linux e vorrei conoscere lo scopo di .bashrce .bash_profile. So solo che sono specifici per ciascun account utente. Quali caratteristiche / comportamenti possono essere aggiunti / modificati implementando qualcosa in questi file


1
Ognuno nasce come n00b. Ma il passo successivo è quello di fare man bash. So che è un sacco di testo, ma ne vale la pena.
ott--

2
-1 Questa domanda non mostra alcuno sforzo di ricerca. È spiegato in modo esauriente nella man bashsezione INVOCAZIONE (paragrafi 4 e 6 per me).
Daniel Beck

Inoltre: differenza tra .bashrc e .bash_profile (probabilmente quello più dell'altro)
slhck,

Risposte:


5

Innanzitutto, .bash_profileviene utilizzato solo per le shell bash di accesso. .bashrcè usato per ogni ALTRE shell bash. Pertanto, .bash_profilegenererà in genere .bashrcse esiste, quindi non è necessario duplicare i comandi che si desidera eseguire per ogni shell, che si tratti di una shell di accesso o meno.

In generale, ci sono due cose che fai con questi script: eseguire programmi e impostare variabili di ambiente. Tutto ciò che vuoi eseguire quando accedi, inserisci .bash_profile, tutto ciò che vuoi impostare su ogni shell (ad esempio, se usi screeno apri un terminale) che inserisci .bashrc.

Alcune cose dal mio .bashrc(come esempio):

  • Impostato $PS1
  • Abilita regole speciali di completamento delle schede
  • Impostare le opzioni della shell eseguendo shopt
  • Imposta alias di comando

Dal mio .bash_profile:

  • fonte .bashrc
  • Aggiungi directory a $PATH
  • Correre ssh-agent

È importante notare che .bash_profile viene eseguito solo se si accede direttamente a una shell bash. Se si avvia una sessione X, si accede al server X che avrà il proprio script di accesso (in genere qualcosa di simile .xsession)


4

È tutto spiegato nel Manuale di Bash nella sezione intitolata "File di avvio di Bash": http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

AGGIORNAMENTO: Ecco la versione breve:

Quando Bash viene richiamato come shell di login interattiva o come shell non interattiva con l' --loginopzione, legge innanzitutto ed esegue i comandi dal file /etc/profile, se quel file esiste. Dopo aver letto il file, si cerca ~/.bash_profile, ~/.bash_logine ~/.profile, in questo ordine, e legge ed esegue comandi dal primo che esiste ed è leggibile.

Quando viene avviata una shell interattiva che non è una shell di accesso, Bash legge ed esegue i comandi da ~/.bashrc, se quel file esiste.

Quando Bash viene avviato in modo non interattivo, ad esempio per eseguire uno script di shell, 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.


2
Aggiungi altro alla tua risposta, quindi solo un link. Non sto dicendo che il link sia negativo, ma un breve riassunto sarebbe molto meglio.
Zoredache,

@Zoredache OK, ho aggiornato la mia risposta con un breve riassunto di ciò che dice il manuale.
Fran,
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.