최근에 Ubuntu를 설치했으며 터미널에서 sh를 실행하면 화살표 키가 작동하지 않아 통화 내역을 거치거나 입력하는 내용을 편집 할 수 없습니다. 처럼 이상한 문자로 나옵니다 ^[[A
.
로그인 쉘은 bash이며 정상적으로 작동하지만 sh로 전환하자마자 작동하지 않습니다.
이 문제를 어떻게 해결할 수 있습니까?
답변
/bin/sh
(대시) 쉘은 POSIX의 준수, 기능 제한 쉘이 시스템을 부팅보다 효율적으로 (작은)이 될 것입니다. 그 일부로 히스토리 및 고급 명령 행 편집은 포함되지 않습니다. 대화식 쉘보다 엄격한 POSIX 스크립팅에 더 적합합니다. 기본적으로 ‘login’쉘은 기본적으로 bash이지만 부트 시스템은 dash를 사용합니다. 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*