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.