Qual è la differenza tra ~ / .profile e ~ / .bash_profile?


Risposte:


44

La .profileera 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_profilealtra parte viene letto solo da bash. È destinato a comandi incompatibili con la shell Bourne standard.


Se sbaglio, correggimi .. .profile viene utilizzato da qualsiasi shell compatibile Bourne mentre .bash_profile viene utilizzato solo da bash .. ho ragione?
Lakesh,

2
@lakesh: Sì, verrà letta qualsiasi shell che fornisce compatibilità bourne .profile. Ad esempio, bashe kshma non csho tcsh. E zshfornisce sia she cshcompatibilità in modo che leggere sia .profilee .login, così come zshfile specifici punti.
bahamat,

c'è qualche tutorial da leggere su questa roba bash e ksh? mai sentito parlare di questi prima ...
lakesh il

4
È possibile iniziare con la cronologia della shell UNIX .
Bahamat,

25

L'originale shproviene .profileall'avvio.

bashproverà .bash_profileprima a fare la fonte , ma se ciò non esiste, farà la fonte .profile1 .

Si noti che se bashviene avviato come sh(ad es. /bin/shÈ un collegamento a /bin/bash) o viene avviato con il --posixflag, tenta di emulare she legge solo .profile.

Note:

  1. In realtà, il primo di .bash_profile, .bash_login,.profile

Guarda anche:


2
Fantastico .. Grazie ... soprattutto per i riferimenti ...
lakesh

10

Sai che esistono molte shell nel mondo UNIX, ma la maggior parte di esse sono:

  • Bourne shell : /bin/sh(Inventore: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Inventore: Brian Fox, nell'ambito del progetto GNU) (potente shell)
  • Shell C : /bin/csh(Inventore: Bill Joy, Inventore dello stack TCP / IP)
  • Conchiglia Korn : /bin/ksh(Inventore: David Korn sotto Bell Labs)
  • Z shell : /bin/zsh(shell potente)
  • Shell TENEX C : /bin/tcsh(derivato dalla shell C)
  • Debian Almquist shell : /bin/dash(Derivato da Almquist shell (ash nell'ambito del progetto NetBSD)) (Dash nato da Lenny)

Ma la tua domanda è circa ~/.bash_profilee ~/.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/passwdcome:

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 logine logout. Quando si accede a bash, ~/.profileè gestito e quando si logout, ~/.bash_logoutviene eseguito. ~/.bash_historyil file mantiene il comando di input.

File di inizializzazione in ciascuna shell

Guscio TENEX C.

  • ~/.login Quando accedi
  • ~/.logout Quando ti disconnetti
  • ~/.tcshrccome ~./bashrcin bash

È possibile impostare la variabile $histfilecome nome del file cronologico e la variabile $historycome numero di comandi da conservare.

Z shell

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 $ZDOTDIRnon impostato, home set.

Shell C.

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.

Korn Shell

  • ~/.profile
  • file rc: definito dall'utente
  • file di logout: N / A

Bourne Again SHell (BASH)

È 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_profilee ~/.bash_profilecorre ~/.bashrc. Infatti ~/.bashrcnon è un file di inizializzazione di bash, perché bash non lo esegue.

Conchiglia Bourne

È morto Anche quando lo usi man sh, vedi il manuale di dash. [Nota del redattore: il bit dashsi applica solo alle distro basate su Debian e Debian come Ubuntu.]

la tua risposta

~/.bash_profilelavora sotto bash, ma ~/.profilelavora sotto Bourne e Korn shell.


2
Chet Ramey era lo sviluppatore principale di Bash.
triplo il

4

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 .bashrcviene eseguito su ogni istanza della shell. Tuttavia, .bash_profileviene 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.


differenza tra ~ / .profile e ~ / .bash_profile?
Lakesh,

2
.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.
anzenketh,

aggiungi questa affermazione alla tua risposta ... perché quella che è la mia domanda è ...
lakesh

Eh? Non risponde nemmeno alla domanda?
Mikel,
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.