Jak mogę zachować kontrolę + d przed rozłączaniem sesji?

26

Regularnie ssh do pudełka centos 5. W jakiś sposób klucze są mapowane, aby control+dwylogować mnie z mojej bieżącej powłoki. Jeśli jestem sudo'owany do innego użycia, przywraca mnie do poprzedniego użytkownika. Jeśli nie jestem sudo, to po prostu mnie rozłącza. Jak mogę temu zapobiec? Regularnie używam control + d, aby zrezygnować z interpretera Pythona i czasami przypadkowo naciskam go więcej niż raz.

cwd
źródło
za csh, robiszset ignoreeof
Trevor Boyd Smith

Odpowiedzi:

32

Szukasz IGNOREEOFzmiennej środowiskowej, jeśli używasz bash:

IGNOREEOF

Steruje działaniem interaktywnej powłoki po otrzymaniu znaku EOF jako jedynego wejścia. Jeśli jest ustawiony, wartością jest liczba kolejnych znaków EOF, które muszą być wpisane jako pierwsze znaki w linii wejściowej przed zakończeniem bash. Jeśli zmienna istnieje, ale nie ma wartości liczbowej lub nie ma wartości, wartością domyślną jest 10. Jeśli nie istnieje, EOF oznacza koniec wprowadzania do powłoki.

Tak export IGNOREEOF=42i musisz nacisnąć Ctrl+DCzterdzieści dwa razy, zanim faktycznie przerywa powłokę.

POSIX też setma -o ignoreeofustawienie. Przejrzyj dokumentację swojej powłoki, aby sprawdzić, czy jest ona w stanie (powinna) i sprawdzić jej dokładną semantykę.

Mata
źródło
Nice, daje komunikat „Użyj wyjścia, aby opuścić powłokę”, przynajmniej na Ubuntu. Będąc użytkownikiem su, prawdopodobnie nie chcesz go przypadkowo zostawić, szczególnie jeśli użytkownik nadrzędny jest na poziomie root.
Fiasco Labs,
1
Osobiście uważam to za irytujące, więc nigdzie go nie ustawiam. Dowiedziałem się o nich, próbując wyłączyć to zachowanie :)
Mat.
2
Nie mogę się oprzeć byciu pedantem. IGNOREEOFto liczba przypadków, w których EOF jest ignorowany przed ostatecznym zaakceptowaniem. Tak więc w powyższym przykładzie export IGNOREEOF=42będziesz musiał nacisnąć CONTROL-D 43 razy, aby wyjść - nie 42.
Alvin Thompson
2

tcsh set ignoreeoflub set ignoreeof=<any value not 1>działa

codoar
źródło
0

Jeśli naprawdę nie lubisz mieć Ctrl-d, możesz usunąć eofpostać z kontrolek terminala.

stty eof undef

Po tym Cntl-dbędzie dowolna inna postać kontrolna.

Arcege
źródło
1
Właśnie próbowałem tego w terminalu (urxvt) z bash i na zwykłej konsoli i to nie działało.
Mat.
Hmm ... to kiedyś działało, a doktorzy wciąż mówią, że tak. Alternatywą byłoby użycie <kbd> Ctrl- [</kvd>.
Arcege
2
Spowoduje to również, że nie będzie już wychodził z Pythona.
psusi