Ich benutze den Bildschirm täglich für meine Terminalanforderungen und bin ziemlich zufrieden damit. Vor kurzem jedoch habe ich einige Updates an meine Bash - Konfigurationsdateien und ich bemerkte , dass ich verschiedene einstellen PATH
Elemente ( PATH
, MANPATH
, INFOPATH
, usw.) in 2 Stellen. Ich habe die Dateien so geändert, wie sie sein sollten, und jetzt werden alle meine Umgebungsvariablen einmal festgelegt .bash_profile
. Hierin liegt mein Problem.
Anscheinend war der Grund, warum ich sie an zwei Stellen eingestellt habe, der Bildschirm. Bildschirm erscheint nur auszuführen .bashrc
und nicht nicht erscheinen meine erben PATH
oder jede andere Umgebungsvariablen korrekt von meiner ursprünglichen Bash - Shell. Da es nur ausgeführt wird .bashrc
und ich jetzt .bash_profile
nur meine Variablen einstelle , erhalte ich eine unvollständige PATH
.
Meine Frage ist also, wie ich meine Umgebungsvariablen ohne Duplizierung auf den Bildschirm bringen kann. Das Lesen der Bash
Dokumente scheint darauf hinzudeuten, dass es sich um die Art von Shell handeln könnte, die der Bildschirm zum Anmelden verwendet, dh eine interaktive Shell ohne Anmeldung, aber ich konnte nicht herausfinden, wie der Bildschirm gezwungen werden kann, eine bestimmte Art von Shell zu verwenden, nur die Shell zu verwenden über -s /bin/bash
.
Sie können meine Konfigurationsdateien auf meiner GitHub-Seite lesen . Dies ist das Commit-Commit, das den Bildschirm beschädigt hat .
EDIT: Ich benutze Screen version 4.00.03 (FAU) 23-Oct-06
und ich neige dazu, es durch aufzurufenscreen -h 50000
BEARBEITEN: Ich konnte dies jetzt auf Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) testen und es zeigt ein anderes Verhalten als auf meinem Mac.
Das spezifische Verhalten, das ich jetzt entdeckt habe, ist, dass in Cygwin die Änderungen, die ich PATH
in .bash_profile vornehme, beim Aufrufen des Bildschirms dupliziert werden und die sukzessive Erstellung von Bildschirmfenstern den Pfad nicht dupliziert, sondern .bash_profile neu erstellt.
Um das Verhalten zu veranschaulichen, von dem ich spreche:
Ausgabe von einem neuen Terminal:
...
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 ../..'
...
[~]$
Ausgabe vom ersten Aufruf des Bildschirms:
[~]$ 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 ../..'
...
[~]$
Nachfolgende Anrufe an 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 ../..'
...
[~]$
Du kannst sehen