Recientemente instalé Ubuntu y cuando ejecuto sh en la Terminal, mis teclas de flecha no funcionan, así que no puedo revisar mi historial de llamadas o editar lo que esté escribiendo. Simplemente sale como personajes extraños como ^[[A
.
El shell de inicio de sesión es bash y funciona bien, pero tan pronto como cambio a sh, no funcionan.
¿Cómo puedo arreglar esto?
sh
? Seguramente la razón de por qué lo hace es irrelevante para el hecho de que es problemático.Respuestas:
El
/bin/sh
shell (dash) es un shell de funcionalidad reducida que cumple con POSIX para que sea más eficiente (más pequeño) para arrancar el sistema. Como parte de eso, el historial y la edición avanzada de línea de comandos no están incluidos. Es más apropiado para secuencias de comandos POSIX estrictas que como un shell interactivo. La idea es que el shell de 'inicio de sesión' sea bash por defecto, pero el sistema de arranque usará un guión. La página del manual en Ubuntu 11.04 muestra que el guión tiene historial y edición de línea de comandos, pero el programa no tiene estas características. Eche un vistazo al tamaño de los ejecutables base.Intenta acostumbrarte a correr
$SHELL
o enbash
lugar de solosh
.fuente
En caso de que
/bin/sh
sea Dash , debe configurarse--with-libedit
antes de la compilación. De lo contrario, aún puede ejecutarseset -o vi
en el shell, pero no hace nada útil.fuente
sh
no tiene historia Al menos, el mío no:fuente
$FCEDIT
o$HISTFILE
o incluso sólofc
? Pensé que al menos esos eran obligatorios, y la representación del$PS1
\!
. Podría estar equivocado acerca de la especificación POSIX, pero todos funcionandash
y lo han hecho durante años.fc
,$FCEDIT
,$HISTFILE
,$PS1
son opcionales en POSIX (marcado con UP para "Portabilidad del usuario"). Lossh
sistemas conformes con Unix tendrán aquellos que requieren UP para la conformidad con Unix (entre otras cosas, Unix también requiere esasecho -e
salidas-e<LF>
). Pero si un sistema / shell solo afirma la conformidad POSIX, entonces no necesita implementarlos. Para Debianash
, puede habilitarse en tiempo de compilación con --with-libedit como ya se mencionó, pero Debian al menos no.dash
que uso como empaquetado para Arch es, por lo tanto, drásticamente diferente al de Debian. Esa es información valiosa. Extraño eso no está adentroman
.