J'ai récemment installé Ubuntu et lorsque je lance sh sur le terminal, mes touches fléchées ne fonctionnent pas, je ne peux donc pas parcourir l'historique de mes appels ou modifier ce que je tape. Il apparaît simplement comme des personnages étranges ^[[A
.
Le shell de connexion est bash et cela fonctionne bien, mais dès que je passe à sh, ils ne fonctionnent pas.
Comment puis-je réparer cela?
sh
? Il est certain que la raison pour laquelle il le fait est sans rapport avec le fait que c'est problématique.Réponses:
Le
/bin/sh
shell (tiret) est un shell à fonctionnalité réduite conforme à POSIX pour être plus efficace (plus petit) pour démarrer le système. Dans ce cadre, l'historique et l'édition de ligne de commande avancée ne sont pas inclus. Il est plus approprié pour un script POSIX strict que comme un shell interactif. L'idée est que le shell «login» serait bash par défaut, mais le système de démarrage utiliserait dash. La page de manuel dans Ubuntu 11.04 montre que le tableau de bord a l'historique et l'édition en ligne de commande, mais le programme n'a pas ces fonctionnalités. Jetez un œil à la taille des exécutables de base.Essayez de vous habituer à courir
$SHELL
oubash
au lieu de simplementsh
.la source
Dans le cas où Dash
/bin/sh
est , il doit être configuré avant la compilation. Sinon, vous pouvez toujours exécuter dans le shell, mais cela ne fait rien d'utile.--with-libedit
set -o vi
la source
sh
n'a pas d'histoire. Au moins, le mien ne:la source
$FCEDIT
ou$HISTFILE
ou même justefc
? Je pensais que ceux-ci au moins étaient obligatoires - et le rendu du$PS1
\!
. Je peux me tromper sur la spécification POSIX - mais ils fonctionnentdash
et fonctionnent tous depuis des années.fc
,$FCEDIT
,$HISTFILE
,$PS1
sont facultatifs dans POSIX (marqués UP pour « utilisateur portabilité »). Lessh
systèmes conformes à Unix en disposeront car UP est requis pour la conformité Unix (entre autres choses, Unix requiert également cesecho -e
sorties-e<LF>
). Mais si un système / shell revendique uniquement la conformité POSIX, il n'a pas besoin de les implémenter. Pour Debianash
, il peut être activé au moment de la compilation avec --with-libedit comme déjà mentionné, mais pas Debian du moins.dash
fichier que j'utilise comme packagé pour Arch est donc radicalement différent de celui que je prends de Debian. Voilà des informations précieuses. Bizarre, ce n'est pas làman
.