Cosa fa "Esegui comando come shell di accesso"?


28

Ho installato alcuni programmi separati, alcuni dei quali richiedono di accedere alle impostazioni del mio terminale GUI e abilitare / disabilitare l'opzione "Esegui comando come shell di accesso" per far funzionare entrambi.

Esempio:

Ho installato Ruby on Rails . Sfortunatamente devo andare nelle opzioni del terminale e abilitare "Esegui comando come shell di login" perché sia ​​nel mio PERCORSO.

Questo non è stato un grosso problema fino a quando non ho installato sexy-bash-prompt , che funziona solo se l'opzione è disabilitata.

Quindi la mia domanda è essenzialmente: cosa fa "Esegui comando come shell di accesso"? C'è un modo per ottenere le cose che girano quando è disabilitato quando corri come shell di login?

Risposte:


31

Supponendo che la tua shell sia Bash (il valore predefinito in Ubuntu), queste sono le differenze:

  • Quando viene eseguito come shell di accesso , Bash leggerà ~/.bash_profile(o, se non esiste, ~/.profile) all'avvio. In alcuni casi, anche questo file legge ~/.bashrc.

  • Quando viene eseguito come shell non di accesso , verrà letto Bash ~/.bashrc.

Quindi, perché vedi comportamenti diversi quando esegui come shell di login / non login? Perché il tuo .bash_profile/ .profilesta facendo cose diverse dalla tua .bashrc.

La soluzione mi sento di raccomandare nel tuo caso è quello di copiare le personalizzazioni apportate a .bash_profile/ .profile, incollare li in .bashrce disabilita "il comando Esegui come una shell di login".


Ah ok Ho pensato che avesse a che fare con il profilo di accesso che leggeva (il sorgente .bashrc risolve alcuni dei problemi che ho avuto). Ci provo, scusami per la domanda orribilmente scritta.
AlbertEngelB,

Grazie per la spiegazione concisa. Non è raro vedere persone semplicemente mantenere le loro personalizzazioni in .bashrc e avere .bash_profile per sorgente .bashrc. Le personalizzazioni specifiche per l'accesso devono essere conservate solo in .bash_profile.
MichaelZ,

1
Perché non solo sorgente .bashrc in .bash_profile e lasciare attiva la shell di accesso? È fattibile?
Dr. Nefario,
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.