gpt4 book ai didi

为 session 设置 TMUX 环境变量

转载 作者:行者123 更新时间:2023-12-03 22:23:24 59 4
gpt4 key购买 nike

我在有多个项目的情况下工作,每个项目中都有许多脚本,这些脚本使用设置为该项目特定值的环境变量。

我想做的是为每个项目使用单独的 tmux session 并设置变量,以便为该 session 中的所有窗口设置它们。

我尝试使用 set-environment 选项,该选项使用 -g 选项工作,然后为连接到该服务器的所有 session 设置变量。

如果没有 -g 选项,我会在使用 show-environment 时看到它的设置,但无法访问 shell 中的变量。

有没有人想出解决这个问题的方法?

使用 tmux 1.8 和 tcsh

最佳答案

我想出了一种方法来做到这一点。我正在使用 tmux 2.5。

背景

在 tmux 手册页中,它指出有两组环境变量:全局变量和每个 session 。当您创建一个新的 tmux session 时,它会将两个组合并在一起,并成为 session 中可用的一组环境变量。如果将环境变量添加到全局组,则它们似乎在所有打开的 session 之间共享。您想将它们添加到每个 session 组。

这样做

第 1 步:创建一个 tmux session 。

tmux new-session -s one

步骤 2:将环境变量添加到每个 session 组。
tmux setenv FOO foo-one

这会将环境变量添加到每个 session 的环境变量集中。如果您输入 tmux showenv ,你会在输出中看到它。但是,它不在当前 session 的环境中。打字 echo $FOO不会给你任何东西。可能有更好的方法来做到这一点,但我发现手动导出它最简单:
export FOO='foo-one'

第 3 步:创建新的窗口/ Pane

现在,每次在当前 session 中创建新窗口或 Pane 时,tmux 都会从每个 session 组中获取 FOO 环境变量。

自动化

我使用 bash 脚本自动创建利用这些环境变量的 tmux session 。这是我如何自动执行上述操作的示例:
#!/bin/bash
BAR='foo-one'
tmux new-session -s one \; \
setenv FOO $BAR \; \
send-keys -t 0 "export FOO="$BAR C-m \; \
split-window -v \; \
send-keys -t 0 'echo $FOO' C-m \; \
send-keys -t 1 'echo $FOO' C-m

关于为 session 设置 TMUX 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701757/

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