rlwrap을 사용하여 대시를 래핑하는 올바른 방법

rlwrap을 사용하여 대시를 래핑하는 올바른 방법

Ubuntu에서는 대시 셸을 사용할 때 readline 키 바인딩 및 파일 이름 완성을 얻도록 설정했습니다 alias sh='rlwrap --complete-filenames sh'(내 컴퓨터에서 sh는 /usr/bin/sh이며 /usr/bin/dash에 대한 심볼릭 링크입니다). 그러나 rlwrap은 SIGTSTP를 올바르게 처리하지 못하는 것 같습니다. 다음 셸 세션을 고려하세요.

배쉬에서:

[email protected]:~$ alias sh='rlwrap --complete-filenames sh'
[email protected]:~$ sh  # Run dash.

대시로:

$ sleep 100  # Right after this, I press Ctrl-Z to send SIGTSTP.
[1]+  Stopped                 rlwrap --complete-filenames sh
[email protected]:~$  # What!? Why do I get a bash prompt!?

Ctrlz를 누르면 dash대신 중지됩니다 sleep. SIGTSTP가 대시 자체가 아닌 대시에서 실행 중인 포그라운드 프로세스를 중지하도록 하려면 어떻게 해야 합니까? 대시와 함께 rlwrap을 사용하는 올바른 방법은 무엇입니까?

나는 rlwrap의 대안으로 ./configure --with-libeditlibedit()를 사용하여 대시를 컴파일하여 readline 기능(사용 dash -E)을 얻을 수 있다는 것을 알고 있지만 불행히도 이것은 파일 이름 완성을 지원하지 않는 것 같습니다.

답변1

SIGTSTP가 대시 자체가 아닌 대시에서 실행 중인 포그라운드 프로세스를 중지하도록 하려면 어떻게 해야 합니까?

당신이 원하는 것이 아닌가요? rlwrap작업 테이블에 무엇이 있는지 알 수 있는 방법이 없으며 dash그에 따라 해당 진정제 다트를 하위 프로세스 중 하나에 보낼 수 있습니다 dash.

그러나 솔루션은 더 간단할 수 있습니다. CTRL+Z키 누르기를 에 바인딩하여 전달 하면 dash됩니다 .rlwrap-direct-keypress.inputrc

그리고현재의 rlwrap이것작동하지 않습니다그러나 rlwrap모든 dash터미널 설정( VSUSP행 문자 포함)은 미러링되므로 rlwrap키 누르기가 표시되지 않습니다.

여기 내 할 일 목록이 있습니다(참조https://github.com/hanslub42/rlwrap/issues/111)

한스( rlwrap관리자)

관련 정보