sh 쉘을 사용할 때 다음 스크립트를 어떻게 실행합니까?
#!/bin/bash
bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward
bind '^[[1'=prefix-2
bind '^[[1~'=beginning-of-line
bind '^[[4'=prefix-2
bind '^[[4~'=end-of-line
답변1
bind
sh 명령이 아니라 bash 명령입니다. Bash를 사용하지 않으면 이 bind
명령이 작동하지 않습니다.
플랫폼에 따라 sh
이는 여러 셸 중 하나일 수 있습니다. 그들은 모두공통 핵심스크립팅을 위해. sh
특히 Plain 에는 편리한 대화형 기능이 거의 없습니다 sh
.
일부 시스템에서 sh
bash(호출 시 호환 모드로 실행 sh
)는 명령줄 편집을 위해 readline 라이브러리를 사용하고 키 바인딩을 기본적으로 지원합니다 bind
. 다른 시스템은 스크립트를 더 빠르게 실행하는 dash 또는 ksh와 같은 보다 효율적인 셸을 사용합니다. 괜찮은 명령줄 인터페이스를 원한다면 sh
.
작성한 스크립트는 실행 시 아무런 효과가 없습니다( bind
비대화형 셸에서 명령이 의미가 없다는 경고를 인쇄하는 것 제외). 키 바인딩 정의만 포함하는 파일은 유용한 독립 실행형 실행 파일이 될 수 없으며 단지 쉘 조각일 뿐입니다. 그래서 상단 shebang은 쓸모가 없습니다.
답변2
bind
사용할 수 없습니다 sh
. ~/.inputrc
readline 바인딩을 변경하려면 수정하세요.