Tmuxを使用して変数を送信する

Tmuxを使用して変数を送信する

次の場所に変数を割り当てました.tmux.conf

setenv -g var "Something"

この変数を使用せずに端末に送信するためにキーをバインドするにはどうすればよいですかprefix:send $var

試しましたが成功しませんでしたbind -n M-q send $var EnterAltQ

ベストアンサー1

setenv -g var "Something"
bind -n M-q run-shell "tmux send #{var}" # or
bind -n M-q run-shell 'tmux send ${var}'

Tmuxの「グローバル環境」がTmuxサーバーの「プロセス環境」と異なることを理解することが重要です。マニュアルページから:

GLOBAL_AND_SESSION_ENVIRONMENT

サーバーが起動すると、tmux は環境を次の場所にコピーします。地球環境

正直言って、これは私にとって少し奇妙です。私は私たち全員がTmuxがシェルに入る-gようにglobal()変数を独自のプロセスとして解決することを期待していると思いますが、それがうまくいくわけではありません。.bashrc

「グローバル環境」は、Tmuxが適用可能な環境です。作成されるすべてのセッション、Tmux自体ではありません。

var以下は、Tmuxサーバー環境の一部ではないことを証明するのに役立ちます。

$ strings /proc/$(pgrep -xo "tmux: server")/environ
$ strings /proc/$(pgrep -xo "tmux: server")/environ | grep Something

実際にはTmuxの一部ではありません。顧客の環境:

$ strings /proc/$(pgrep -xo "tmux: client")/environ | grep Something

しかしそれははいTmuxが新しく作成されたセッションに渡す環境の一部:

$ strings /proc/$$/environ | grep Something
var=Something

したがって、設定した値を活用するために、以下を実行するために.tmux.conf使用できます。run-shell新しいシェルを実行すると、Tmuxはグローバル環境を埋め、tmux send ...そこからコマンドを実行します。

おすすめ記事