Zsh read
por alguna razón está haciendo eco ^M
en lugar de aceptarlos como <Enter>
pulsaciones de teclas. (Si -d
está configurado, entonces se reconocen como <Enter>
's, pero aún se repiten). Tampoco admite elementos básicos como la tecla de retroceso.
Puedo evitar esto pirateando / corriendo bash
,
> a=$(bash -c 'read -e -p "What would you like to do?: " tmp; echo $tmp')
What would you like to do?: eat cake
> echo $a
eat cake
pero me pregunto si hay una forma más limpia.
zsh
instalación 4.3.10;% read a
Funciona bien aquí.read
funciona en máquinas Linux.Respuestas:
Para ingresar una línea de texto cómodamente bajo zsh, use
vared
. Usando envared
lugar deread
invoca zle , que es el equivalente de pasar-e
bash para invocar readline.El comportamiento que describe con normalidad
read
parece un terminal mal configurado en lugar de un problema de shell. Ejecutestty -a
para mostrar la configuración de su terminal, y asegúrese de queeol
esté configurado^M
yerase
configurado para lo que Backspaceenvía su clave. Dependiendo del sistema operativo y de cómo está configurado y en el terminal, Backspaceenvía uno^H
o^?
. La configuración de retroceso suele fallar debido a algún archivo de configuración que intenta configurarlo manualmente, por lo que lo primero que debe hacer es rastrear y eliminar dicha configuración incorrecta. Si no encuentra ninguno, revise la configuración de su emulador de terminal para verificar que no esté configurado en algún modo de compatibilidad histórica. Si todo lo demás falla, agregue algo como esto a su~/.zshrc
:fuente
vared
construcción. Resulta quezshzle
definitivamente vale la pena hojear la página de manual.