Niedawno zainstalowałem Ubuntu i kiedy uruchamiam sh na Terminalu, moje klawisze strzałek nie działają, więc nie mogę przeglądać historii połączeń ani edytować tego, co wpisuję. Po prostu wychodzi jak dziwne postacie ^[[A
.
Powłoka logowania jest bash i działa dobrze, ale jak tylko przejdę do sh, nie działają.
Jak mogę to naprawić?
sh
? Z pewnością powód, dla którego to robi, jest nieistotny dla faktu, że jest problematyczny.Odpowiedzi:
/bin/sh
(Łącznik) otoczka jest zgodny POSIX zmniejszona powłoki funkcjonalność być bardziej wydajne (mniejsza) do uruchamiania systemu. W związku z tym historia i zaawansowana edycja wiersza poleceń nie są uwzględnione. Jest bardziej odpowiedni dla ścisłego skryptu POSIX niż jako interaktywna powłoka. Chodzi o to, że powłoka „login” byłaby domyślnie bash, ale system rozruchowy używałby myślnika. Strona podręcznika w Ubuntu 11.04 pokazuje, że dash ma historię i edycję wiersza poleceń, ale program nie ma tych funkcji. Spójrz na rozmiar podstawowych plików wykonywalnych.Spróbuj przyzwyczaić się do biegania
$SHELL
lubbash
zamiast tegosh
.źródło
W przypadku,
/bin/sh
jest Dash , to musi być skonfigurowany--with-libedit
przed kompilacją. W przeciwnym razie możesz nadal działaćset -o vi
w powłoce, ale to nie robi nic pożytecznego.źródło
sh
nie ma żadnej historii. Przynajmniej mój nie:źródło
$FCEDIT
lub$HISTFILE
nawet po prostufc
? Myślałem, że przynajmniej są obowiązkowe - i renderowanie$PS1
\!
. Mogę się mylić co do specyfikacji POSIX - ale wszystkie one działajądash
i działają od lat.fc
,$FCEDIT
,$HISTFILE
,$PS1
są opcjonalne w POSIX (oznaczonego UP dla „User przenoszenia”).sh
Systemów Unix zgodnymi będą miały te jako UP jest wymagana dla Unix zgodności (między innymi Unix wymaga również, abyecho -e
wyjść-e<LF>
). Ale jeśli system / powłoka deklaruje tylko zgodność z POSIX, to nie musi ich implementować. W przypadku Debianaash
można go włączyć w czasie kompilacji z opcją --with-libedit, jak już wspomniano, ale przynajmniej Debian tego nie robi.dash
używam w pakiecie dla Archa, dlatego drastycznie różni się od tego, w którym biorę Debiana. To cenna informacja. Dziwne, że nie maman
.