bash 環境変数を変更して、tmux セッションで Windows に適用する簡単な方法はありますか?
グーグルで検索しても解決策が見つからなかったので、ここに質問を投稿します。
ありがとう!!
bash 環境変数を変更して、tmux セッションで Windows に適用する簡単な方法はありますか?
グーグルで検索しても解決策が見つからなかったので、ここに質問を投稿します。
ありがとう!!
環境変数を直接変更することはできません。
ただし、tmux インスタンス内のシェル端末に新しい変数を取得させることができます。これにはいくつかの手順が必要です。
まず、tmux はそれ自体で環境変数を更新できます。update-environment
構成ディレクティブがこれを行います。ここにリストされている変数はすべて自動更新されます。tmux セッションに接続すると、接続したばかりのクライアントからの値でセッションの環境変数が更新されます。したがって、 を実行tmux attach
してSSH_AUTH_SOCK
設定した場合、tmux セッションは の新しい値を取得しますSSH_AUTH_SOCK
。
ただし、それはセッションの変数のみを更新するため、新しいペイン/ウィンドウのみが値を取得します。既存のウィンドウは古い値のままです。@ IgnacioVazquez-Abrams が言ったように、これに対する直接的な修正はありません。
ただし、多くのプログラムで修正できます。十分に最近のバージョンの tmux にはshow-environment
、セッションに環境変数の現在の値を問い合わせるコマンドがあります。これにより、update-environment
ロジックを使用した後、プログラム内から環境変数を取得できます。
たとえば、いくつかのシェルに新しい値を取得させることができます。ZSH では、次のprecmd
フックを使用してこれを行い~/.zshrc
ます。
_update_ssh_agent() {
local var
var=$(tmux show-environment |grep '^SSH_AUTH_SOCK=')
if [ "$?" -eq 0 ]; then
eval "$var"
fi
}
if [[ -n "$TMUX" ]]; then
add-zsh-hook precmd _update_ssh_agent
fi
これにより、tmux セッション内のシェルが新しいプロンプトを表示するたびに SSH エージェントを更新するようになります。再接続したら、プロンプトで Enter キーを押すだけで、新しい SSH エージェント接続が取得されます。
Bash にはプリコマンド メカニズムもありますが、手動で構成する方法はわかりません。show-environment
vim や emacs など、自分自身を更新するために使用するプログラムをさらに構成することもできます。ただし、これを実行する各プログラムを個別に構成する必要があります。
いいえ。
そして難しい方法さえありません。別のプロセスの環境変数を操作することは、せいぜい移植性がありません。