Mac Gnu-Screen nie ładuje domyślnego .bash_profile

15

Mam kilka niestandardowych ustawień w moim profilu bash. kiedy używam gnu-screen, zdałem sobie sprawę, że moje ekrany się nie uruchamiają source /Users/disappearedng/.bash_profile. Próbuję umieścić źródłowy /Users/disappearedng/.bash_profile w moim pliku .screenrc, ale potem narzeka, że ​​alias nie jest poleceniem ... (Wydaje mi się, że screenrc potrzebuje specyficznego polecenia screenrc).

Próbowałem zmienić mój .bash_profile na .profile lub .bash_rc. Nic z tej pracy.

Jakaś pomoc?

zniknął
źródło

Odpowiedzi:

17

Plik .bash_profile (a także plik .profile) jest ładowany dla powłok logowania, powłoki nie zalogowane używają .bashrc (bez symbolu _). W pliku .screenrc znajduje się wiersz, który mówi screenowi, jaką powłokę ma się odrodzić podczas uruchamiania okna ekranowego (gdy nie uruchamia określonego programu jako aplikacji okienkowej). W moim pliku .screenrc jest to jako takie (łącznie z komentarzami):

# 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

Sprawdź plik .screenrc i sprawdź, czy linia powłoki ma przed nim myślnik. Mając ten symbol myślnika i wymuszając powłokę logowania, otrzymasz swój .bash_profile. Zmienna $ SHELL w moim .screenrc używa wartości powłoki podanej przez powłokę, która uruchamia ekran (ogólnie dla mnie to bash).

W przypadku, gdy się zastanawiasz, największą różnicą, którą udało mi się odkryć między powłokami logowania a powłokami niezalogowanymi jest to, że powłoka niezalogowana jest zwykle wywoływana do wykonywania skryptów.

Matrix Mole
źródło
Ach dzięki! Ponadto, czy jest jakiś sposób, aby łatwo dać mi znać, że to bieżące okno znajduje się na ekranie GNU?
zniknął
Opcja hardstatus w pliku .screenrc może być pomocna w upewnieniu się, że możesz rozpoznać, że jesteś na ekranie (wraz z kilkoma innymi fajnymi ustawieniami, jak rozumiem). Strona man screen powinna zawierać szczegółowe informacje na temat jej konfiguracji (nie znam tych z góry mojej głowy).
Matrix Mole,
3

Pozyskiwanie .bash_profilejest w rzeczywistości czymś innym niż aplikacja terminalowa na komputery Mac, czego nie robi większość aplikacji terminalowych. Screen czyta ~/.bashrcjednak za każdym razem, gdy odradzasz nową powłokę.

Jeśli zmienisz nazwę ~/.bash_profilena ~/.bashrc(bez podkreślenia między bash i rc, jak w twoim pytaniu), to będzie to źródło.

Moją preferowaną strategią jest jednak umieszczenie wszystkich moich ustawień w bashrc, a następnie źródło tego w bash_profileten sposób:

[ -f .bashrc ] && . .bashrc
Freedom_Ben
źródło
-1

Nie musisz zmieniać żadnego pliku konfiguracyjnego, jeśli zapiszesz wszystkie ustawienia .bash_profile, jak zwykle, aby skonfigurować terminal, i utworzysz łącze o nazwie .bashrcskierowanej do twojej .bash_profilesesji ekranowej poprzez:

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

Wszelkie zmiany dokonane w jednym z plików są przechowywane w, .bash_profileale również dostępne przez .bashrc.

Jedyną wadą jest to, że nie można dodawać ustawień tylko do jednego z plików konfiguracyjnych.

tarkness
źródło
Czy możesz trochę rozszerzyć tę odpowiedź? Tak naprawdę nie wyjaśniłeś, jak to rozwiązałoby problem.
bwDraco,
-1

Powłoki logowania do Linuksa źródłują te, które się nie logują, dodając następujący wiersz w przypadku plików użytkownika:

[[ -f ~/.bashrc ]] && . ~/.bashrc
FreeFog
źródło
To rozwiązanie zostało już opublikowane.
slhck
Wygląda też na odwrócony.
G-Man mówi „Przywróć Monikę”