Użyj ekranu GNU jako „powłoki” logowania

22

Jaki jest najlepszy sposób, aby ekran był automatycznie uruchamiany po otwarciu nowej powłoki, czy to poprzez logowanie, xterm, czy cokolwiek innego?

Widzę, że najczęstszą rekomendacją jest umieszczenie exec screenw pliku rc lub logu / profilu twojej zwykłej powłoki, ale na przykład dla tcsh, powłoki logowania uruchamiają .login na końcu, podczas gdy powłoki nie zalogowane czytają .cshrc na końcu. Jeśli włożę exec screen.cshrc, powłoki logowania nie źródło pliku .login, a jeśli włożę go do .login, powłoki bez logowania nie uruchomi się ekran. Zakładam, że istnieją podobne problemy z innymi powłokami.

wfaulk
źródło
1
To nie odpowiada na pytanie, ale warto wspomnieć: tmux to rewolucyjny krok w górę od ekranu i stara się być blisko klawiatury kompatybilnej z ekranem. Ta strona dokumentuje, jak uruchomić go automatycznie z .bashrc.
datashaman

Odpowiedzi:

19

Jednym ze sposobów jest:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

Zauważ, że jest to napisane dla bash, ale również powinno być podobne csh. Ustaw to do .cshrcwykonania dla wszystkich powłok.


Inny sposób: Można po prostu ustawić screenjako powłokę logowania w /etc/passwdsobie, i umieścić tę linię do listy ~/.screenrc: (Fix ścieżkę, oczywiście).

defshell / bin / csh

Może to jednak uszkodzić programy, które uruchamiają powłokę logowania zdefiniowaną /etc/passwddla różnych poleceń.

( Edycja: nie zapomnij dodać ekranu /etc/shells)

grawitacja
źródło
1
Nie wiedziałem wcześniej o zmiennej STY i patrząc na nią w podręczniku ekranowym zauważyłem również, że możesz wykonać screen-in-screen, aby uruchomić polecenia w nowym oknie (np. „Screen vi” otworzy vi w nowe okno, bez kontrolnej powłoki). BTW, dla csh, umieściłbyś go w pliku .login, a nie .cshrc, nie chcesz, aby działał dla „wszystkich” powłok. Samething dotyczy bash, umieść go w .profile lub .bash_login, a nie w .bashrc.
haridsv
4

Stare pytanie, ale google szukanie tego samego przywiodło mnie tutaj, więc oto odpowiedź dla każdego, kto natknie się na tę stronę.

Najlepszą rzeczą, jaką do tej pory znalazłem, jest byobu, jeśli ma go Twoja dystrybucja. Posiada opcję uruchamiania przy logowaniu i kontroluje wiele ekranów jednocześnie.

Możesz odłączyć i wylogować się w jednym miejscu, a następnie zalogować się do tej samej sesji w innym miejscu.

Uważam, że ekran świetnie nadaje się do uruchamiania procesów serwera, ale byobu doskonale nadaje się do codziennych czynności.

solbot
źródło
-2

Co powiesz na używanie chsh:

chsh /usr/bin/screen

Ustawia domyślną powłokę logowania w / etc / passwd. (też możesz to tam mieć)

mrossi
źródło
Trudno jest wtedy zrobić cokolwiek innego na swoim koncie niż logowanie. Ponadto, twój sysadmin prawdopodobnie nie ma screena w / etc / shells. Zobacz także zaakceptowaną odpowiedź.
wfaulk