활성 포그라운드 프로세스가 있는 터미널의 제어 문자

활성 포그라운드 프로세스가 있는 터미널의 제어 문자

포그라운드의 터미널에서 실행 중인 프로세스가 있다고 가정해 보겠습니다. 활성화된 동안 명령을 입력하고 Enter 키를 누르면 프로세스가 완료되면 명령이 실행됩니다.

이제 "일반" 문자뿐만 아니라 제어 문자도 입력하고 싶습니다. 어떤 이유로 이러한 제어 문자는 문자 그대로 다시 반향되지만 전경 프로세스가 완료되면 올바르게 해석되지 않습니다.

예를 들어 이 문제를 설명하겠습니다.

deso@XXX ~ $ sleep 10
echo test
deso@XXX ~ $ echo test
test

절전 모드가 활성화되면 "echo test"를 입력하고 Enter 키를 누르면 10초 후에 실행됩니다. 이제 동일한 터미널에서(제가 본 텍스트 출력은 다음과 같습니다):

deso@XXX ~ $ sleep 10
^R
echo
deso@XXX ~ $ echo

deso@XXX ~ $

내 의도는 sleep이 활성화된 동안 readline의 역방향 기록 검색 기능을 호출하는 것입니다(이것은 앞서 입력한 "에코 테스트"를 찾아야 합니다). 쉘이 내 입력을 기다리고 있으면 Ctrl-R을 사용하여 작업을 수행할 수 있습니다. Ctrl-R은 활성 프로세스에 대해 무시되는 것 같습니다(적어도 역방향 기록 검색은 시작하지 않습니다). 이것은 모두 Linux에 있습니다(xterm + tmux + bash를 사용하지만 tmux를 사용하지 않고 bash 대신 busybox를 사용해 보았습니다).

이제 흥미로운 점은 VMware ESX(비지박스, 즉 Ash를 셸로 사용)에서 예상대로 작동한다는 것입니다. 즉, 제어 문자가 문자 그대로 다시 반향되지 않고 제어 문자로 허용되고 해석됩니다(나머지 문자로). 포그라운드 프로세스가 완료된 후). 이는 위의 예에서 기록 검색이 호출되고 마지막 "echo" 명령("echo test")이 찾아서 실행된다는 의미입니다.

내 질문은: 누가 이 행동에 영향을 미쳤습니까? 터미널, 쉘, 커널? 이와 관련하여 Linux가 ESX처럼 작동하도록 하는 방법이 있습니까? 앞서 언급했듯이 저는 다른 쉘(bash 및 ash)과 다른 터미널 에뮬레이터(xterm 및 urxvt)를 사용하여 동일한 실험을 시도했습니다. 행동은 항상 동일합니다.

관련 정보