Uso lo schermo su base giornaliera per le esigenze dei miei terminali e ne sono abbastanza soddisfatto. Recentemente, però, ho fatto alcuni aggiornamenti ai miei file di configurazione bash e ho notato che stavo installando vari PATH
elementi ( PATH
, MANPATH
, INFOPATH
, ecc) in 2 posti. Ho modificato i file per essere quelli che dovrebbero essere e ora tutte le mie variabili di ambiente vengono impostate una volta dentro .bash_profile
. Qui sta il mio problema.
Apparentemente, il motivo per cui li stavo impostando in due punti era a causa dello schermo. lo schermo sembra solo eseguire .bashrc
e non sembra ereditare PATH
correttamente la mia o qualsiasi altra variabile d'ambiente dalla mia shell bash originale. Poiché viene eseguito solo .bashrc
e ora imposto solo le mie variabili .bash_profile
, ottengo un incompleto PATH
.
La mia domanda, quindi, è come ottenere le mie variabili di ambiente sullo schermo senza la duplicazione. Leggere i Bash
documenti sembra indicare che potrebbe essere il tipo di shell utilizzato dallo schermo per accedere, ovvero una shell interattiva senza accesso, ma non sono riuscito a capire come forzare lo schermo a utilizzare un particolare tipo di shell, solo il shell da usare via -s /bin/bash
.
Puoi consultare i miei file di configurazione nella mia pagina GitHub . Questo è il commit commit che ha rotto lo schermo .
EDIT: sto usando Screen version 4.00.03 (FAU) 23-Oct-06
e tendo a invocarloscreen -h 50000
EDIT: ora sono stato in grado di testarlo su Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) e mostra un comportamento diverso rispetto al mio Mac.
Il comportamento specifico che ho scoperto ora è che in Cygwin le modifiche apportate PATH
a .bash_profile vengono duplicate quando si accede a screen e quindi la successiva creazione di finestre dello schermo non duplica il percorso ma re-source .bash_profile.
Per illustrare il comportamento di cui sto parlando:
Uscita da un nuovo terminale:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Uscita dalla prima chiamata dello schermo:
[~]$ screen -h 50000 -s -/bin/bash
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Chiamate successive a C-a c
:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Puoi vedere