Se esamino la shell bash in un OS X (10.6.4) terminale, ad esempio digitando echo $0, c'è un trattino davanti mio guscio, in questo modo: -bash. Cosa significa questo trattino?
Se esamino la shell bash in un OS X (10.6.4) terminale, ad esempio digitando echo $0, c'è un trattino davanti mio guscio, in questo modo: -bash. Cosa significa questo trattino?
Risposte:
Significa che bashviene invocato come shell di login.
man bash dice:
Una shell di login è quella il cui primo carattere dell'argomento zero è a
-, oppure uno è iniziato con l'--loginopzione.Quando bash viene invocato come shell di login interattiva o come shell non interattiva con l'
--loginopzione, legge prima 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 i comandi dal primo che esiste ed è leggibile. L'--noprofileopzione può essere usato quando il guscio viene avviato per inibire questo comportamento.Quando esce una shell di login, bash legge ed esegue i comandi dal file
~/.bash_logout, se esiste.
Troverai login -pfnel tuo psoutput, che di default avvia una shell di login.
Prova a correre login -pfe login -pflvedi la differenza. man logindescrive la differenza:
-lIndica al programma eseguito tramite login che questa non è una sessione di accesso (per convenzione, una sessione di accesso viene segnalata al programma con un trattino come primo carattere diargv[0]; questa opzione lo disabilita), e impedisce che vengachdir(2)inserita nella home directory dell'utente . L'impostazione predefinita è aggiungere il trattino (questa è una sessione di accesso).
echo $0: se digito echo $0il terminale invocato da ctrl + alt + f1, il risultato è -bash; ma se lo scrivo in termianl invocato da ctrl + alt + t, il risultato è bash(nessun trattino iniziale). Potresti spiegare perché?
--loginargomento, non cambia il suo argv[0], ma funge da shell di login.
mancita