![어떤 쉘이 readline을 사용합니까?](https://linux55.com/image/201987/%EC%96%B4%EB%96%A4%20%EC%89%98%EC%9D%B4%20readline%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
최근에 포스팅했어요하나의 질문bash
, 및 셸에서 관찰되는 이상한 동작과 관련하여 , fish
또는 셸에서는 zsh
이 동작이 나타나지 않습니다. 이 행동은 다음으로 인해 발생한 것으로 밝혀졌습니다.tcsh
csh
ksh
dash
다양성라이브러리의 기본 설정에서 readline
이것을 set enable-bracketed-paste Off
내 ~/.inputc
.
그것은 나를 궁금하게 만든다. 이것이 내 시스템에 있는 특정 쉘 하위 집합에만 영향을 미치는 이유는 무엇입니까? 모든 쉘이 그것을 사용하지 않습니까 readline
? 어떤 종류의 일반적인 규칙이 있습니까? bash
, zsh
및 fish
동작을 변경하는 반면 다른 쉘은 변경하지 않는 이유는 무엇입니까 ?
답변1
readline
bash
동일한 작성자가 동시에 구현하고 bash
인기 있는 쉘에서 사용되며 대부분은 bash
.
이 readline
라이브러리는 bash에서 파생되었습니다. bash
1.02용 파일은 ChangeLog
다음과 같습니다.
Wed Jun 28 16:51:42 1989 Brian Fox (bfox at aurel) * New directory: LIB contains readline and history stuff, and is Make-able on its own. Also contains its own ChangeLog * history.c: removed shell dependent stuff, made into standalone library. Tue Jun 27 13:05:54 1989 Brian Fox (bfox at aurel) * readline.c: removed shell dependent stuff. * New file: bashline.c contains all of the shell specific readline material in an attempt to begin using the readline stuff as a library. Mon Jun 26 13:35:16 1989 Brian Fox (bfox at aurel) [...] * readline.c, jobs.c Make commands that do not complete sucessfully restore the tty state to whatever it was before the command was executed.
zsh
1990년 첫 번째 1.0 버전은 bash
자체 라인 편집기가 아직 준비되지 않았기 때문에 수정된 버전의 readline을 사용했지만 4개월 후인 1991년 2.0에서는 자체 readline으로 전환했습니다. README
1.0의 문서 에서 :
zsh v1.0 버전입니다. 나는 일시적으로 내 삶을 더 쉽게 만들기 위해 Brian Fox가 작성한 GNU "readline" 편집기를 셸에 통합했습니다. 많이 수정했기 때문에 에디터에 오류가 있다면 아마도 제 잘못일 것입니다. readline은 다음 버전의 zsh에 포함되지 않습니다.
dash
dash
Ash 기반 쉘은 일반적으로 BSD의 libedit를 사용합니다( 대화형 쉘이 아닌 스크립트 실행에만 사용되기 때문에 일반적으로 활성화하지 않고 컴파일할 때 ).
Byron Rakitzis가 복제한 Unix V10/Plan9 셸에서는 GNU , Simmule Turner 및 Gert-Jan Vons와 rc
같은 컴파일 타임 라인 편집기를 선택할 수 있습니다 . 첫 번째 버전은 readline만 제공합니다. 그리고 제공 항목과 제공 항목 의 선택을 기준으로 합니다.readline
editline
vrl
es
akanga
rc
readline
editline
hush
ash
busybox 에는 셸 기반 및 기타 작은 프로그램(예: bc
, , )에서 ed
사용되는 자체 줄 편집기가 있습니다 fdisk
.
readline
할 수 있는 라인 편집기를 제공하기 때문에 좋습니다.예)은 일관성을 제공하기 위해 다양한 도구에서 사용되지만 아마도 가장 풍부한 기능을 갖춘(가장 풍부한 기능은 아닐지라도) 범용 라인 편집 라이브러리 중 하나일지라도 그 용도는 상대적으로 제한됩니다. 또한 GPL에 따라 라이센스가 부여되므로 GPL에 따라 라이센스가 부여된 소프트웨어에서만 사용할 수 있습니다.GPL 또는 호환 가능.
ksh, pdksh 및 그 파생물인 tcsh, zsh, fish 또는 yash를 포함한 대부분의 쉘에는 일반적으로 더 고급화된 자체 라인 편집기가 있습니다. ksh의 라인 편집기는 1983년경에 작성되었으며 bash
bash의 readline은 대부분 이 인터페이스를 복제합니다. pdksh
라인 tcsh
편집기는 또한 bash 및 readline보다 이전 버전입니다. vi
POSIX는 ksh 기반 스타일 라인 편집기를 지정합니다. emacs
POSIX는 이를 명시하지 않았습니다. 왜냐하면 Richard Stallman(GNU의 주요 저자 emacs
이자 "POSIX" 이름도 생각해낸 사람)이 이에 반대했기 때문입니다.
이를 지원하는 터미널 편집기나 줄 편집기에서 대괄호 붙여넣기 모드를 활성화하려는 데는 타당한 이유가 있습니다. 바라보다:클립보드 남용으로부터 자신을 어떻게 보호할 수 있나요?.
보다"이전 제안에는 KornShell에서 파생된 emacs 명령줄 편집 모드가 포함되었지만 emacs 편집기 자체는 포함되지 않았습니다. emacs 지지자 커뮤니티는 표준화하려는 시도를 우려하기 때문에 전체 emacs 편집기를 표준화해서는 안 된다고 주장했습니다. 매우 강력한 환경은 공급업체가 커뮤니티에서 요구하는 확장성이 부족한 엄격하게 일관된 버전을 출시하도록 장려할 것입니다. 또한 원래 Emacs 프로그램의 작성자는 이 프로그램을 포함하지 않는 많은 역사적 시스템이 있음을 표명했습니다. .emacs 또는 포함되어 있지만 지원하지 않지만 vi를 포함하고 지원하지 않는 쉘은 거의 없습니다. 분명히 KornShell 버전과 편집기가 GNU 시스템과 함께 배포되었기 때문에 emacs 명령줄 편집 모드는 생략되었습니다. POSIX emacs 모드를 제거해야 하거나 지정되지 않은 조건이 많이 있었습니다. KornShell 작성자는 쉘을 일관성 있게 만들기 위해 변경을 고려하는 데 동의했지만 표준 개발자는 당시 사양을 연기하기로 결정했습니다. 후속 초안에서는 수용 가능한 정의에 동의할 것입니다.존재하다POSIX 사양 sh
의 RATIONALE 부분.