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.confkit.shのようなtmuxショートカットで再利用したいと思います。bind-key i "run-shell \"kit.sh\""
  • 自動入力機能を追加する予定ですtmux send-keyskit.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"

失敗する。

推測されましたが、1つの方法は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

関連情報