gpt4 book ai didi

tmux - 如何更改环境变量并应用于 tmux session 中的所有窗口

转载 作者:行者123 更新时间:2023-12-01 15:53:32 32 4
gpt4 key购买 nike

我想知道有没有什么简单的方法可以更改 bash 环境变量并在 tmux session 中应用于 Windows?

我用谷歌搜索并没有找到解决方案,所以我在这里发布了这个问题。

谢谢!!

最佳答案

您不能直接更改环境变量。

但是,您可以让 tmux 实例内的 shell 终端接收新变量。这需要几个步骤。

首先,tmux 可以自行更新环境变量。 update-environment配置指令执行此操作。此处列出的任何变量都将自动更新 - 连接到 tmux session 会使用您刚刚连接的客户端的值更新 session 的环境变量。所以如果你运行 tmux attach ,并有 SSH_AUTH_SOCK设置,那么 tmux session 将获得新值 SSH_AUTH_SOCK .

但是,这只会更新 session 的变量,因此只有新的 Pane /窗 Eloquent 会获得这些值。现有窗口仍将具有旧值。正如@IgnacioVazquez-Abrams 所说,对此没有直接的解决方法。

但是,您可以在许多程序中修复它。最新版本的 tmux 有一个 show-environment命令,它查询 session 以获取环境变量的当前值。这允许您在使用 update-environment 之后从程序内部获取环境变量。逻辑。

例如,您可以让一些 shell 获取新值。在 ZSH 中,我使用 precmd 执行此操作 Hook ~/.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 session 中的 shell 每次显示新提示时都会更新 SSH 代理。重新连接后,我所要做的就是在提示下按 Enter 键,它会获取新的 SSH 代理连接。

Bash 也有预命令机制,虽然我不知道如何立即配置它。您可以另外配置更多程序以使用 show-environment自我更新,例如 vim 或 emacs。但是,您需要单独配置您可能想要使用的每个程序。

关于tmux - 如何更改环境变量并应用于 tmux session 中的所有窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901657/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com