Diversamente bash
, ssh
la richiesta della password non utilizza alcuna libreria speciale di input terminale come readline
. Le funzioni di modifica delle linee sono solo le funzioni di modifica delle linee POSIX TTY di base.
Quindi hai un POSIX TTY in modalità "cotta" (non grezza), alias modalità canonica, e l'unica modifica di linea disponibile è quella fornita dal kernel. Vedi stty(1)
e notalo
kill = ^U
. Questo è anche il punto in cui è definito il carattere backspace ( erase = ^?
). Word-erase ( ^W
) è utile quando non si digita cieco.
lnext = ^V
significa che puoi digitare control-v quindi qualsiasi cosa (incluso control-c) per ottenere un control-c letterale.
Per eseguire il debug di ciò che stavi cercando di fare alla cieca, eseguire cat
o cat > /dev/null
nel tuo terminale . Digita roba, quindi vedi cosa funziona e cosa non lo modifica.
readline
(usato da bash
) legge il carattere non elaborato ed esegue la modifica delle righe nello spazio utente. I suoi collegamenti predefiniti sono compatibili con i caratteri di controllo TTY predefiniti, tuttavia, per il sottoinsieme di funzionalità di modifica che entrambi forniscono.
readline va ben oltre la semplice modifica delle linee di un semplice TTY. (ad es. un TTY può cancellare solo i caratteri alla fine della riga, quindi non c'è nessuna ^a
e delete
o freccia sinistra / destra)
Quando bash
esegue un comando in primo piano, mette prima il TTY in modalità canonica (perché è l'impostazione predefinita). Pertanto, l'esecuzione stty -a
(senza reindirizzamento) vedrà sempre il proprio terminale in modalità canonica. Ma se reindirizzi l'input da qualche altro TTY che è in bash
esecuzione su di esso, puoi vedere quali impostazioni del terminale bash + readline sono state applicate. ad esempio stty -a < /dev/pts/12
mostra -icanon
per la modalità raw perché ho un bash
funzionamento su quel terminale. (Sono passato a un'altra scheda e ho eseguito tty
, quindi ho utilizzato il percorso del file del dispositivo dal primo terminale). Se correvo cat
in quell'altro terminale, vedrei icanon
per la modalità canonica.
Correlati: il TTY si è demistificato
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface