최근 점점 더 많은 GUI 응용 프로그램(okular, inkscape 등)이 활성화되면 터미널 에코를 비활성화하기 시작했습니다. 이는 기껏해야 불필요한 것 같습니다(프로세스를 배경으로 설정하지 않으면 어쨌든 입력하지 않을 것이며, 설정하더라도 누가 신경쓰겠습니까? 배경으로 설정하면 아무런 효과도 생성되지 않습니다). 그러나 더 나쁜 것은 실수로 뭔가 잘못하고 ctrl-C를 사용하여 본능적으로 종료하는 경우(실수로 많은 파일에서 okular를 호출하는 경우처럼), echo머무르다장애가 있는. 세상이 끝나는 것은 아니지만, stty echo
이런 일이 일어날 때마다 맹목적으로 타이핑을 해야 한다는 사실이 나를 불안하게 만든다.
터미널에 이러한 설정 전환을 비활성화하도록 지시하는 방법이 있습니까? 나는 termcap을 수정하는 것이 가능하다고 생각하지만 그것이 내가 아는 정도입니다. 물론 이렇게 하면 눈에 보이지 않는 비밀번호가 보이게 될 수도 있지만, 어떻게 해야 하는지 알고 싶습니다. 변조 방지 터미널을 여는 것만으로도 충분할 것입니다.
답변1
echo
터미널 장치(tty 커널 드라이버의 잘 관리된 부분)의 설정이고, termcap은 이스케이프 시퀀스를 통한 터미널(실제 터미널 또는 에뮬레이터)의 제어이며 두 가지 독립적인 것입니다.
여기서는 애플리케이션이 특정 작업을 수행하는 것을 방지하려고 합니다 ioctl
. 한 가지 방법은 터미널에서 분리하는 것입니다.
socat - exec:okular,pty,raw
okular
실행 중인 다른 의사 터미널 장치에 연결 socat
하고 터미널에서 해당 장치로 데이터를 전달합니다.
임의의 매개변수를 전달하려면 다음을 사용하십시오 zsh
.
okular() {
CODE="$0 ${(j[ ])${(qq)argv}}
" socat - 'system:"eval \"$CODE\"",pty,raw'
}