Ao contrário bash
, ssh
o prompt de senha do não usa nenhuma biblioteca especial de entrada de terminal como readline
. Os recursos de edição de linha são apenas os recursos básicos de edição de linha POSIX TTY.
Portanto, você tem um POSIX TTY no modo "cozido" (não cru), também conhecido como modo canônico, e a única edição de linha disponível é a fornecida pelo kernel. Veja stty(1)
e observe isso
kill = ^U
. É também aqui que o caractere backspace é definido ( erase = ^?
). O apagamento de palavras ( ^W
) é conveniente quando você não está digitando às cegas.
lnext = ^V
significa que você pode digitar control-v e qualquer coisa (incluindo control-c) para obter um literal control-c.
Para depurar o que você estava tentando fazer às cegas, execute cat
ou cat > /dev/null
no seu terminal . Digite coisas e veja o que funciona e o que não funciona para editá-lo.
readline
(usado por bash
) lê caracteres brutos e faz a edição de linha no espaço do usuário. Suas ligações padrão são compatíveis com os caracteres de controle TTY padrão, no entanto, para o subconjunto de recursos de edição que ambos fornecem.
O readline vai muito além da simples edição de linhas de um TTY simples. (por exemplo, um TTY só pode excluir caracteres no final da linha, portanto não há ^a
e delete
/ ou seta para a esquerda / direita)
Quando bash
executa um comando em primeiro plano, ele coloca o TTY no modo canônico primeiro (porque esse é o padrão). Portanto, a execução stty -a
(sem redirecionamento) sempre verá seu próprio terminal no modo canônico. Mas se você redirecionar a entrada de algum outro TTY bash
em execução, poderá ver quais configurações do terminal bash + readline foram aplicadas. por exemplo, stty -a < /dev/pts/12
mostra -icanon
para o modo bruto, porque eu tenho uma bash
corrida nesse terminal. (Troquei para outra guia e corri tty
, depois usei o caminho do arquivo do dispositivo no primeiro terminal). Se eu corresse cat
naquele outro terminal, veria o icanon
modo canônico.
Relacionados: O TTY desmistificado
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface