추가 읽기

추가 읽기

bash 쉘처럼 쉘을 종료하기 위해 ksh에서 키를 매핑하는 방법 Ctrl을 알고 싶습니다 .D

ksh의 키 바인딩에 익숙하지 않습니다.

편집하다

아래 내 의견을 참조하세요.

$ echo $0
bash
$ exit    # I pressed Ctrl-D here, 'exit' string was placed and the shell exited

$> echo $0
ksh
$> Use 'exit' to leave ksh  # I pressed Ctrl-D here, Got this message and returned to the ksh prompt
$> echo $0
ksh
$> cat >> somefile
Some text
$>   # I pressed Ctrl-D here. So this key combination is taken as eof char for file, but not for exit.

그렇다면 쉘을 종료하려면 매핑이 필요합니까 Ctrl? D어떻게 해야 하나요?

답변1

Ctrl+ D(ASCII EOT)이미매뉴얼 페이지에 설명된 대로 모드 viemacs모드 에서 쉘을 종료하도록 매핑합니다 . ksh93스크립트 캡처를 보면 이는 분명한 사실입니다.

매뉴얼 페이지는 또한 다른 사람들이 여기에 언급한 내용, 즉 행이 비어 있을 때만 키가 이 효과를 갖는다는 것을 설명합니다. (이는 쿠킹 모드에서 라인 훈육의 표준 동작을 모방합니다.)

당신이 놓친 것은 (맨 페이지에서도 설명하는) ignoreeof해당 옵션을 설정했다는 것입니다. 따라서 Korn Shell은 빈 줄에서 Ctrl+를 보고 D무시하며, ignoreeof설정이 열려 있을 때 해당 명령을 명시적으로 사용해야 함 을 설명하는 메시지를 인쇄합니다 exit.

따라서 stty다른 답변에서와 같이 핸들러를 잊어버리고 캡처하십시오.

set -o noignoreeof

추가 읽기

답변2

당신이 원하는stty명령: ^D가 어떻게 매핑되는지 확인하세요 stty -a. 다른 것으로 변경할 수 있습니다 stty eof char. "eof" 설정을 제거하세요.stty eof undef


trap테스트되지 않음: 명령에 대한 ksh 매뉴얼 페이지를 읽고 싶습니다 . 신호에 대한 핸들러를 설정하는 것만으로도 충분할 수 있습니다 EXIT.

# warning: completely untested
exit_handler() { echo "exit"; exit; }
trap exit_handler EXIT

관련 정보