2011-12-27 5 views
28

または少なくともその部分は意味があります。現在の環境でtmuxを起動するにはどうすればよいですか?

さらに具体的には、スクリプトを実行することによってエクスポートされた環境変数を使用して、手元のタスクに適切な環境を作成します。私がtmuxを実行すると、これらの変数はグローバルまたはセッション環境のどこにも見えません。

set-environment VAR $VAR 

は、私が期待するもの行いません。もちろん、私はしかし、私の.tmux.confファイル内の特定のVARSを指定することができれば、私は満足だろう

をもう一度このスクリプトを実行しますが...することができます。

ありがとうございます。事前にありがとう:)

ああ、私はなぜ知っていると思います。

tmuxの2番目のセッションを開始すると、別の端末では、最初のセッションから環境がコピーされます。最初のものは、呼び出し元のシェルの現在の環境をほとんど取り、それにいくつかのtmuxinessを追加します。

現時点での回避策は、環境を変更する必要があるときにtmuxセッションを停止して開始することです。

+0

Georgeさんに感謝します。 – Phluks

+3

私が達成したいと思うものには、より簡単な方法があります。 '-L'(または '-S')オプションを使用する。 これらは、現在の環境で新しいサーバーを開始します。 Ex。 'tmux -L newenv' すべてのエンカッションは、そのソケット上のサーバーに同じ環境で新しいセッションを作成します。 (自分のコース名を選択できます) 'tmux -L newenv list-sessions、 特定のサーバー上のセッションを一覧表示します。 ...等 – Phluks

答えて

54

tmuxセッションオプションupdate-environmentに、新しいセッションの作成時に更新する変数を含めるように設定する必要があります。デフォルト値は、いくつかの一般的なX11およびSSHの変数が含まれています

DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY 

あなたの変数を追加するには、その-g-aフラグをset-optiontmuxのコマンドを使用します(既存の「グローバル」(デフォルト)値に追加)。あなたの~/.tmux.confで:

set-option -ga update-environment ' YOUR_VAR' 

あなたの変数名がデフォルト値に末尾の名前から分離されるように先頭のスペースを必ず含めてください。

+0

優れた答え。ありがとうございました。 – Phluks

+3

偉大な応答。 1つの注意:〜/ .tmux.confファイルはtmuxサーバーがすでに実行されているときは読み込まれないので、このような変更は有効になりません。私はそれが 'tmux attach-session'の間に読み込まれることを期待していましたが、適用されませんでした。 – Wade

+0

これを復活させていただきありがとうございますが、manページには「新しいセッションが作成されたときにクライアントからセッション環境を更新するためにupdate-environmentセッションオプションを使用することができます。これは、_existing_セッションに再接続するときにそれらを更新するはずですが、そう思わないことを示唆しています。何か案は? – sjbx

関連する問題