Mac Gnu-Screen non carica .bash_profile predefinito


14

Ho un sacco di impostazioni personalizzate nel mio bash_profile. quando uso gnu-screen, mi sono reso conto che i miei schermi non venivano eseguiti source /Users/disappearedng/.bash_profile. Provo a mettere source /Users/disappearedng/.bash_profile nel mio file .screenrc ma poi mi lamento che alias non è un comando ... (Immagino che screenrc abbia bisogno di un comando specifico di screenrc).

Ho provato a cambiare il mio .bash_profile in .profile o .bash_rc. Niente di tutto ciò.

Qualsiasi aiuto?

Risposte:


17

Il file .bash_profile (e anche il file .profile) viene caricato per le shell di accesso, le shell non di accesso usano .bashrc (nessun simbolo _). Nel file .screenrc è presente una riga che indica alla schermata quale shell deve essere generata all'avvio di una finestra dello schermo (quando non si avvia un programma specifico come applicazione della finestra). Nel mio file .screenrc, questo è come tale (compresi anche i commenti):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

Controlla il tuo file .screenrc e verifica che la linea di shell abbia il trattino di fronte. Avendo quel simbolo del trattino e forzando una shell di accesso, otterrai il tuo .bash_profile. La variabile $ SHELL nel mio .screenrc sta usando il valore della shell come fornito dalla shell che avvia lo schermo (generalmente per me è bash).

Nel caso ti stia chiedendo, la più grande differenza che sono stato in grado di scoprire tra shell di login e shell non di accesso è che una shell di non accesso è normalmente ciò che viene invocato per l'esecuzione di script.


Ah grazie! Inoltre, c'è un modo per farmi facilmente sapere che questa finestra corrente è all'interno dello schermo di GNU?
scomparso il

l'opzione hardstatus nel file .screenrc può essere usata per aiutare ad accertarti che tu sia in grado di identificare che sei nella schermata (insieme ad alcune altre impostazioni intelligenti capisco). La pagina man dello schermo dovrebbe avere i dettagli su come configurarla (non conosco quelli fuori dalla mia testa).
Matrix Mole,

2

Il sourcing .bash_profileè in realtà qualcosa di diverso rispetto all'app per terminali Mac che la maggior parte delle app per terminali non fa. Lo schermo legge ~/.bashrccomunque, ogni volta che si genera una nuova shell.

Se rinomini il tuo ~/.bash_profilein ~/.bashrc(senza sottolineatura tra bash e rc, come nella tua domanda), allora verrà fornito.

La mia strategia preferita, tuttavia, è quella di mettere tutte le mie impostazioni in bashrc, e quindi sorgente da in bash_profilequesto modo:

[ -f .bashrc ] && . .bashrc

-1

Non è necessario modificare alcun file di configurazione, se si scrivono tutte le impostazioni in .bash_profile, come si fa normalmente per impostare il terminale e creare un collegamento denominato che .bashrcpunta al proprio .bash_profileper le sessioni dello schermo tramite:

$ ln -s ~/.bash_profile ~/.bashrc

Tutte le modifiche apportate a uno dei file vengono archiviate .bash_profilema accessibili anche da .bashrc.

L'unico inconveniente è che non è possibile aggiungere impostazioni solo a uno dei file di configurazione.


Puoi ampliare un po 'questa risposta? Non hai davvero spiegato come questo risolverebbe il problema.
bwDraco,

-1

Le shell di accesso Linux generano quelle non di accesso aggiungendo la seguente riga in caso di file utente:

[[ -f ~/.bashrc ]] && . ~/.bashrc

Questa soluzione è già stata pubblicata.
slhck,

Inoltre, sembra essere al contrario.
G-Man dice "Ripristina Monica" l'
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.