Codziennie używam ekranu do moich potrzeb terminalowych i jestem z tego całkiem zadowolony. Ostatnio jednak, zrobiłem kilka nowości do moich plików konfiguracyjnych bash i zauważyłem, że zachodziło różne PATH
elementy ( PATH
, MANPATH
, INFOPATH
, etc) w 2 miejscach. Zmodyfikowałem pliki, aby były takie, jakie powinny być, a teraz wszystkie moje zmienne środowiskowe są ustawione raz .bash_profile
. Na tym polega mój problem.
Najwyraźniej ustawiłem je w dwóch miejscach z powodu ekranu. Pojawi się ekran tylko wykonać .bashrc
i czy nie wydaje się, aby odziedziczyć moje PATH
lub innym środowisku zmiennych poprawnie z mojej oryginalnej powłoki bash. Ponieważ to tylko wykonuje, .bashrc
a teraz ustawiam tylko moje zmienne .bash_profile
, otrzymuję niekompletne PATH
.
Moje pytanie brzmi zatem, jak przenieść moje zmienne środowiskowe na ekran bez powielania. Czytanie Bash
dokumentów wydaje się wskazywać, że może to być rodzaj powłoki używanej przez ekran do logowania, tj. Interaktywna powłoka bez logowania, ale nie mogłem wymyślić, jak zmusić ekran do korzystania z określonego rodzaju powłoki, tylko powłoka do użycia przez -s /bin/bash
.
Możesz przeglądać moje pliki konfiguracyjne na mojej stronie GitHub . To jest zatwierdzenie, które zepsuło ekran .
EDYCJA: Używam Screen version 4.00.03 (FAU) 23-Oct-06
i zwykle wywołuję toscreen -h 50000
EDYCJA: Byłem w stanie przetestować to na Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) i wykazuje inne zachowanie niż na moim Macu.
Specyficzne zachowanie, które teraz odkryłem, polega na tym, że w Cygwin zmiany, które wprowadzam PATH
w .bash_profile, są powielane po wejściu na screen, a następnie kolejne tworzenie okien ekranowych nie powielają ścieżki, ale ponownie źródłują .bash_profile.
Aby zilustrować zachowanie, o którym mówię:
Wyjście z nowego terminala:
...
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 ../..'
...
[~]$
Wynik pierwszego wywołania screena:
[~]$ 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 ../..'
...
[~]$
Kolejne połączenia z 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 ../..'
...
[~]$
Możesz zobaczyć