Eu instalei recentemente o Ubuntu e, quando executo sh no Terminal, minhas teclas de seta não funcionam, então não posso passar pelo meu histórico de chamadas ou editar o que estiver digitando. Ele só aparece como personagens estranhos ^[[A
.
O shell de login é bash e funciona bem, mas assim que eu mudo para sh, eles não funcionam.
Como posso consertar isso?
sh
? Certamente a razão pela qual ele faz isso é irrelevante para o fato de ser problemático.Respostas:
O
/bin/sh
shell (traço) é um shell de funcionalidade reduzida compatível com POSIX para ser mais eficiente (menor) para inicializar o sistema. Como parte disso, o histórico e a edição avançada da linha de comando não estão incluídos. É mais apropriado para scripts estritos do POSIX do que como um shell interativo. A ideia é que o shell de 'login' seja bash por padrão, mas o sistema de inicialização usaria o dash. A página de manual no Ubuntu 11.04 mostra que o dash tem histórico e edição de linha de comando, mas o programa não possui esses recursos. Dê uma olhada no tamanho dos executáveis base.Tente se acostumar a correr
$SHELL
ou embash
vez de apenassh
.fonte
No caso
/bin/sh
é traço , tem que ser configurado--with-libedit
antes da compilação. Caso contrário, você ainda poderá executarset -o vi
o shell, mas ele não fará nada de útil.fonte
sh
não tem histórico. Pelo menos, o meu não:fonte
$FCEDIT
ou$HISTFILE
ou apenasfc
? Eu pensei que esses pelo menos eram obrigatórios - e a renderização do$PS1
\!
. Eu posso estar errado sobre a especificação POSIX - mas todas elas funcionamdash
há anos.fc
,$FCEDIT
,$HISTFILE
,$PS1
são opcionais no POSIX (marcada com UP para "Portabilidade do Usuário"). Ossh
sistemas conformes ao Unix terão aqueles que UP é necessário para conformidade com o Unix (entre outras coisas, o Unix também exige que asecho -e
saídas-e<LF>
). Mas se um sistema / shell reivindicar apenas a conformidade com POSIX, não será necessário implementá-los. Para o Debianash
, ele pode ser ativado em tempo de compilação com --with-libedit como já mencionado, mas o Debian pelo menos não.dash
eu uso como empacotado para o Arch é, portanto, drasticamente diferente do que eu aceito pelo Debian. Essa informação é valiosa. Estranho que não estejaman
.