최근에 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*