tmux run-shell은 대화형 쉘을 지원합니까?

tmux run-shell은 대화형 쉘을 지원합니까?

tmux run-shell이 ​​쉘을 실행할 수 있다는 것을 알고 있습니다.

$ tmux run-shell "echo start; echo \${var}end"
start
end

하지만 쉘이 대화형으로 작동하거나 일부 사용자 입력을 읽도록 하려면 어떻게 해야 할까요?

$ tmux run-shell "echo start; read -p \"prompt:\" var; echo \${var}end"
start
end
  • 위 코드의 read 문이 작동하지 않는 이유는 무엇입니까?
  • 상호 운용성을 달성하기 위해 tmux를 사용하는 방법을 알려줄 수 있는 tmux 전문가가 있습니까?

배경:

  • kit.sh저는 다양한 공동작업을 하나의 기능으로 모아왔습니다.
  • 이 스크립트에는 상호작용 문제가 많이 있습니다.
  • 이제 .tmux.conf kit.sh와 같은 tmux 단축키를 통해 재사용 하고 싶습니다.bind-key i "run-shell \"kit.sh\""
  • 자동 입력 기능을 추가 할 계획입니다 tmux send-keys.kit.sh

20231016 업데이트:

내 문제는 다음과 같이 해결되었습니다.

bind-key i "new-window \"/path/to/my/kit.sh\""

kit.sh에서는 사용자 입력을 대화형으로 읽을 수 있습니다.

답변1

tmux run-shell하위 명령은 tty가 필요한 프로그램에는 적용되지 않습니다. 이는 read대화형 모드[1]에서 실행할 때 실패하는 이유와 그 이유를 설명합니다.

tmux run-shell "echo start; read -p \"prompt:\" var; echo \${var}end"

실패하다.

짐작하셨겠지만, 한 가지 방법은 tmux send-keys[2]를 사용하는 것입니다. split-window[3]을 사용할 수도 있습니다 .

tmux split-window "read -p prompt: VAR; echo \$VAR; read -p \"press any key\""

tmux버전 이상을 사용하는 경우 하위 명령 [2]을 3.2사용할 수도 있습니다.display-popup

tmux display-popup "read -p prompt: VAR; echo \$VAR"

[0]https://github.com/tmux/tmux/issues/3187#issuecomment-1127079855

[1]https://www.gnu.org/software/bash/manual/bash.html#index-read

[2]https://github.com/tmux/tmux/issues/3187

[삼]https://github.com/tmux/tmux/issues/3617#issuecomment-1627569000

관련 정보