sh에서 화살표 키가 작동하지 않는 이유는 무엇입니까?

sh에서 화살표 키가 작동하지 않는 이유는 무엇입니까?

최근에 Ubuntu를 설치했는데 터미널에서 sh를 실행하면 화살표 키가 작동하지 않아서 통화 기록을 보거나 입력 중인 내용을 편집할 수 없습니다. 와 같은 이상한 문자가 나타납니다 ^[[A.

로그인 쉘은 bash제대로 작동하지만 일단 로그인 쉘로 전환하면 sh작동하지 않습니다.

이 문제를 어떻게 해결할 수 있나요?

답변1

(대시) 셸은 /bin/sh보다 효율적이고 작은 시스템 부팅을 가능하게 하는 POSIX 규격의 간단한 셸입니다. 이에 따라 기록 및 고급 명령줄 편집은 포함되지 않습니다. 대화형 쉘보다 엄격한 POSIX 스크립팅에 더 적합합니다. 기본적으로 "로그인" 셸은 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.

답변2

경우 /bin/sh에는스프린트, --with-libedit컴파일하기 전에 구성해야 합니다. 그렇지 않으면 쉘에서 계속 set -o vi실행할 수 있지만 유용한 작업은 수행되지 않습니다.

답변3

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*

관련 정보