次の場所に変数を割り当てました.tmux.conf
。
setenv -g var "Something"
この変数を使用せずに端末に送信するためにキーをバインドするにはどうすればよいですかprefix:send $var
?
試しましたが成功しませんでしたbind -n M-q send $var Enter
。AltQ
答え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 ...
そこからコマンドを実行します。