stty 설정이 병리적으로 변경되었습니다.

stty 설정이 병리적으로 변경되었습니다.

방금 새 컴퓨터를 설정했고 평소처럼 xterm삭제 키가 작동하도록 설정을 변경해야 했습니다. (Ctrl-H send ^H, backspace send ^?, delete send ^[[3~. 물론 객관적으로 올바른 방법입니다.) 기본 xterm 설정에는 버그가 있지만 적어도 xterm 측에서는 이 설정에서 모든 것이 잘 작동합니다.

문제는 어떤 이유로 든 sttyxterm의 설정이 항상 erase = ^H.tmux^H^?

stty왜 이렇게 구성되어 있는지 모르겠습니다 . 이는 기본값이 아닙니다. stty기본값과의 차이점을 표시하기 위해 단독으로 입력하면 erase = ^H;줄이 표시되고, 수동으로 입력하면 stty erase ^?제거됩니다. (이것은 또한 stdin 및 tmux의 문제를 해결합니다.) 그러나 이것을 시작하는 모든 터미널에 입력하는 것은 매우 지루하며, 넣을 수는 있지만 .bashrc그것은 올바른 방법이 아닌 것 같습니다.

stty이 잘못된 기본 설정이 아닌 설정이 사용되는 원인은 무엇입니까 ? 어떻게 하면 멈추게 할 수 있나요?

답변1

이를 수행하는 방법에는 여러 가지가 있습니다. 말씀하신 방법이 하나일 수도 있습니다. xterm다른 프로그램을 실행하는 프로그램입니다. 다른 프로그램을 pty(일반적으로 쉘)로 래핑하고 래핑된 프로그램에 제공하는 입력을 채널로 파이프합니다. 의사 터미널의 특징은 에뮬레이트된 장치일 뿐이라는 것입니다. 따라서 xterm입력하게 될 장치에 대한 추측이 필요합니다. 물론 더 구체적인 정보도 얻을 수 있습니다. xterm다양한 환경 변수를 존중하세요. 더 좋은 점은 xresources입니다.

에서 man xterm:

  • ttyModes(수업 TtyModes)
    • 터미널 설정 키워드와 해당 키워드가 바인딩될 수 있는 문자를 포함하는 문자열을 지정합니다. 허용되는 키워드는 다음과 같습니다.부르크,덥썩,에브,단종,단종 2,삭제,지우기 2,플러시,정수,죽이다,다음,사직하다,회전수,시작,상태,멈추다,미결,스위치그리고벨라스. 제어 문자는 다음과 같이 지정할 수 있습니다.^char(예: ^c또는 ^u) ^?삭제를 나타내는 데 사용될 수 있습니다(127). undef를 표현하는 데 사용됩니다 ^-. X 리소스의 리터럴 백슬래시가 다음 문자를 이스케이프 \034하므로 사용합니다 .^\
    • sttyxterm이는 시작할 때마다 수행할 필요 없이 기본 터미널 설정을 재정의하는 데 유용합니다 . 그러나 stty특정 호스트의 프로그램은 다른 키워드를 사용할 수 있습니다. xterm테이블은 내장되어 있습니다.
    • ttyModes리소스가 삭제 값을 지정하는 경우 ptyInitialErase리소스 설정이 재정의됩니다. 즉, xterm 터미널이 해당 값과 일치하도록 초기화됩니다.

관련 정보