Почему мои стрелочные клавиши не работают в sh?

Я недавно установил Ubuntu, и когда я запускаю sh на Терминале, мои клавиши со стрелками не работают, поэтому я не могу пройти свою историю вызовов или редактировать все, что я набираю. Он просто появляется как странные персонажи, такие как ^[[A

Оболочка для входа – bash, и она работает нормально, но как только я переключаюсь на sh, они не работают.

Как я могу это исправить?

Оболочка /bin/sh (тире) является совместимой с POSIX, уменьшенной функциональной оболочкой, чтобы быть более эффективной (меньшей) для загрузки системы. Как часть этого, история и расширенное редактирование командной строки не включены. Это более подходит для строгих сценариев POSIX, чем для интерактивной оболочки. Идея заключается в том, что оболочка «login» будет bash по умолчанию, но система загрузки будет использовать тире. Страница руководства в Ubuntu 11.04 показывает, что тире имеет историю и редактирование командной строки, но программа не имеет этих функций. Взгляните на размер базовых исполняемых файлов.

 $ ls -l /bin/*ash /bin/sh -rwxr-xr-x 1 root root 822420 Mar 31 15:26 /bin/bash -rwxr-xr-x 1 root root 83848 Nov 15 2010 /bin/dash lrwxrwxrwx 1 root root 4 May 17 21:15 /bin/rbash -> bash lrwxrwxrwx 1 root root 4 May 17 21:15 /bin/sh -> dash $ strings /bin/bash | egrep -ci 'fc|hist' 181 $ strings /bin/dash | egrep -ci 'fs|hist' 1 

Попытайтесь привыкнуть к запуску $SHELL или bash вместо просто sh .

В случае, если /bin/sh является тире , он должен быть сконфигурирован --with-libedit перед компиляцией. В противном случае вы можете запустить set -o vi в оболочке, но ничего полезного не делать.

sh не имеет истории. По крайней мере, у меня нет:

 server$ sh \h$ history sh: history: not found \h$ fc sh: fc: not found \h$ exit server$ type sh sh is hashed (/bin/sh) server$ ll /bin/sh lrwxrwxrwx 1 root root 4 Jun 1 18:43 /bin/sh -> dash*