Qual è la differenza tra ~/.profile
e ~/.bash_profile
?
Qual è la differenza tra ~/.profile
e ~/.bash_profile
?
Risposte:
La .profile
era la configurazione del profilo originale per la shell Bourne (alias, sh
). bash
, essendo una shell compatibile con Bourne la leggerà e la utilizzerà. L' .bash_profile
altra parte viene letto solo da bash
. È destinato a comandi incompatibili con la shell Bourne standard.
.profile
. Ad esempio, bash
e ksh
ma non csh
o tcsh
. E zsh
fornisce sia sh
e csh
compatibilità in modo che leggere sia .profile
e .login
, così come zsh
file specifici punti.
L'originale sh
proviene .profile
all'avvio.
bash
proverà .bash_profile
prima a fare la fonte , ma se ciò non esiste, farà la fonte .profile
1 .
Si noti che se bash
viene avviato come sh
(ad es. /bin/sh
È un collegamento a /bin/bash
) o viene avviato con il --posix
flag, tenta di emulare sh
e legge solo .profile
.
Note:
.bash_profile
, .bash_login
,.profile
Guarda anche:
Sai che esistono molte shell nel mondo UNIX, ma la maggior parte di esse sono:
/bin/sh
(Inventore: Stephen Bourne)/bin/bash
(Inventore: Brian Fox, nell'ambito del progetto GNU) (potente shell)/bin/csh
(Inventore: Bill Joy, Inventore dello stack TCP / IP)/bin/ksh
(Inventore: David Korn sotto Bell Labs)/bin/zsh
(shell potente)/bin/tcsh
(derivato dalla shell C)/bin/dash
(Derivato da Almquist shell (ash nell'ambito del progetto NetBSD)) (Dash nato da Lenny)Ma la tua domanda è circa ~/.bash_profile
e ~/.profile
:
Quando si accede a una macchina UNIX, reindirizza alla propria directory home, in base alla shell scelta da un amministratore nell'ultimo campo /etc/passwd
come:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
La shell viene eseguita e per impostazione predefinita ogni shell ha un file impostato per login
e logout
. Quando si accede a bash, ~/.profile
è gestito e quando si logout
, ~/.bash_logout
viene eseguito.
~/.bash_history
il file mantiene il comando di input.
~/.login
Quando accedi~/.logout
Quando ti disconnetti~/.tcshrc
come ~./bashrc
in bashÈ possibile impostare la variabile $histfile
come nome del file cronologico e la variabile $history
come numero di comandi da conservare.
In effetti è una shell potente e se hai tempo libero, assicurati di migrare su di essa.
Ad eccezione di altre shell, la shell Z ha molti file di configurazione e file di inizializzazione, solo che scrivo:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
Nota: se $ZDOTDIR
non impostato, home set.
Nota: la shell TENEX C è stata biforcuta dalla shell C. Supporti shell C di BSD. Se hai familiarità con la programmazione in linguaggio C, dovresti sentirti a tuo agio poiché la sua sintassi è simile.
~/.login
~/.cshrc
~/.logout
Nota: csh è vecchio. Usa invece tcsh.
~/.profile
È una shell molto potente e nata sotto il progetto GNU e biforcuta da Bourne Shell.
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
Quando accedi, bash corre ~/.bash_profile
e ~/.bash_profile
corre ~/.bashrc
. Infatti ~/.bashrc
non è un file di inizializzazione di bash, perché bash non lo esegue.
È morto Anche quando lo usi man sh
, vedi il manuale di dash
. [Nota del redattore: il bit dash
si applica solo alle distro basate su Debian e Debian come Ubuntu.]
~/.bash_profile
lavora sotto bash, ma ~/.profile
lavora sotto Bourne e Korn shell.
Una shell di login è semplicemente una shell a cui puoi accedere tramite ssh o dalla console. Una shell non di accesso è una shell a cui anche qualcuno non può accedere. Una shell non di accesso viene spesso utilizzata da programmi / servizi di sistema.
Per quanto riguarda il tuo terzo punto. È vero che .bashrc
viene eseguito su ogni istanza della shell. Tuttavia, .bash_profile
viene utilizzato solo al momento dell'accesso. Quindi il motivo dei due file separati.
.profile
è per cose che non sono specificamente correlate a Bash, come le variabili di ambiente $ PATH, dovrebbe anche essere disponibile in qualsiasi momento. .bash_profile
è specifico per shell di login o shell eseguite al login.