O Zsh, read
por algum motivo, está ecoando ^M
, em vez de aceitá-los como <Enter>
pressionamentos de tecla. (Se -d
estiver definido, eles são reconhecidos como <Enter>
's, mas ainda ecoam.) Também não suporta noções básicas como a tecla backspace.
Eu posso contornar isso invadindo / executando 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
mas estou me perguntando se existe uma maneira mais limpa.
zsh
instalação do 4.3.10;% read a
funciona bem aqui.read
funciona em máquinas Linux.Respostas:
Para inserir uma linha de texto confortavelmente em zsh, use
vared
. Usar emvared
vez deread
chama zle , que é o equivalente a passar-e
no bash para chamar readline.O comportamento descrito com simplicidade
read
parece um terminal mal configurado, e não um problema de shell. Executestty -a
para mostrar suas configurações de terminal e verifique seeol
está definido como^M
eerase
para o que sua Backspacechave envia. Dependendo do sistema operacional, de como está configurado e do terminal, Backspaceenvia^H
ou^?
. A configuração de backspace geralmente dá errado por causa de algum arquivo de configuração que tenta defini-la manualmente. Portanto, a primeira coisa que você deve fazer é rastrear e remover qualquer configuração incorreta. Se você não encontrar nenhum, revise as configurações do emulador de terminal para verificar se ele não está definido em algum modo de compatibilidade histórica. Se tudo mais falhar, adicione algo assim ao seu~/.zshrc
:fonte
vared
builtin. Acontecezshzle
que a página de manual definitivamente vale pelo menos a folhear.