W przeciwieństwie bash, sshjest prośba o podanie hasła nie korzysta z żadnego specjalnego terminala wejściowego biblioteki podobnego readline. Funkcje edycji linii to tylko podstawowe funkcje edycji linii POSIX TTY.
Masz więc POSIX TTY w trybie „gotowanym” (nie surowym), znanym również jako tryb kanoniczny, a jedyną dostępną edycją linii jest to, co zapewnia jądro. Zobacz stty(1)i zauważ to
kill = ^U. Tutaj również definiowany jest znak backspace ( erase = ^?). Usuwanie słów ( ^W) jest wygodne, gdy nie piszesz w ciemno.
lnext = ^V oznacza, że możesz wpisać control-v, a następnie cokolwiek (w tym control-c), aby uzyskać literalną kontrolę-c.
Aby debugować to, co próbujesz zrobić na ślepo, uruchom catlub cat > /dev/nullw swoim terminalu . Wpisz rzeczy, a następnie sprawdź, co działa, a co nie, aby je edytować.
readline(używane przez bash) odczytuje surowy znak i wykonuje edycję linii w przestrzeni użytkownika. Jego domyślne powiązania są jednak zgodne z domyślnymi znakami kontrolnymi TTY dla podzbioru funkcji edycyjnych, które oba zapewniają.
readline wykracza poza zwykłą edycję linii zwykłego TTY. (np TTY może jedynie usunąć znaki na końcu linii, więc nie ma ^ai deleteczy strzałka w lewo / w prawo)
Gdy bashuruchamia polecenie w planie, to stawia w trybie TTY kanonicznej pierwszy (ponieważ jest to ustawienie domyślne). Tak więc uruchomiona stty -a(bez przekierowania) zawsze zobaczy swój własny terminal w trybie kanonicznym. Ale jeśli przekierujesz dane wejściowe z innego bashdziałającego na nim TTY , możesz zobaczyć, jakie ustawienia terminalu zastosował bash + readline. np. stty -a < /dev/pts/12pokazuje -icanontryb surowy, ponieważ mam bashuruchomiony na tym terminalu. (Przełączyłem się na inną kartę i uruchomiłem tty, a następnie użyłem ścieżki pliku urządzenia z pierwszego terminala). Gdybym biegł catw tym drugim terminalu, sprawdziłbym icanontryb kanoniczny.
Powiązane: TTY odszyfrowany
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface