sh 쉘에서 "bind" 명령을 작동시키는 방법

sh 쉘에서 "bind" 명령을 작동시키는 방법

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

sh에 바인딩

답변1

bindsh 명령이 아니라 bash 명령입니다. Bash를 사용하지 않으면 이 bind명령이 작동하지 않습니다.

플랫폼에 따라 sh이는 여러 셸 중 하나일 수 있습니다. 그들은 모두공통 핵심스크립팅을 위해. sh특히 Plain 에는 편리한 대화형 기능이 거의 없습니다 sh.

일부 시스템에서 shbash(호출 시 호환 모드로 실행 sh)는 명령줄 편집을 위해 readline 라이브러리를 사용하고 키 바인딩을 기본적으로 지원합니다 bind. 다른 시스템은 스크립트를 더 빠르게 실행하는 dash 또는 ksh와 같은 보다 효율적인 셸을 사용합니다. 괜찮은 명령줄 인터페이스를 원한다면 sh.

작성한 스크립트는 실행 시 아무런 효과가 없습니다( bind비대화형 셸에서 명령이 의미가 없다는 경고를 인쇄하는 것 제외). 키 바인딩 정의만 포함하는 파일은 유용한 독립 실행형 실행 파일이 될 수 없으며 단지 쉘 조각일 뿐입니다. 그래서 상단 shebang은 쓸모가 없습니다.

답변2

bind사용할 수 없습니다 sh. ~/.inputrcreadline 바인딩을 변경하려면 수정하세요.

관련 정보