tmux - 如何在不同环境下启动两个 tmux session ?

标签 tmux

这样做的天真方法行不通。尝试这个:

启动第一个 tmux session 。

$ export ENVIRONMENT="production"
$ tmux

然后您可以在 session 内验证 ENVIRONMENTproduction
然后,在第二个终端中启动另一个 session
$ export ENVIRONMENT="staging"
$ tmux

出人意料的是这届ENVIRONMENT也是production !这是非常不直观的!

这里发生了什么?
我怎样才能做到这一点?我喜欢 session 中的所有窗口“继承”环境变量。

最佳答案

“最简单”的解决方案是创建一个新的 tmux不同环境的服务器。

$ ENVIRONMENT=production tmux -L prod-tmux


$ ENVIRONMENT=staging tmux -L staging-tmux

你总是需要指定哪个套接字,prod-tmuxstaging-tmux , 在您重新连接到现有 session 时使用。

下一个解决方案是使用一台服务器,但修改该服务器中每个 session 的环境。就像是
$ tmux new-session -d -s production
$ tmux new-session -d -s staging
$ tmux set-environment -t production ENVIRONMENT production
$ tmux set-environment -t staging ENVIRONMENT staging

请注意 ENVIRONMENT不会在每个 session 的初始窗口中运行的进程中设置,但将为创建的任何后续窗口设置。 (除非服务器在第一次启动时继承了 ENVIRONMENT。)

当您运行时 tmux ,它首先查找现有服务器(默认服务器,或由 -L-S 选项指定的服务器)。如果没有服务器,则启动一个,服务器的环境继承自当前环境。

如果有服务器,tmux简单地请求服务器执行 tmux 命令(默认情况下, new-session ,或由 tmux 的参数指定的任何命令)命令,然后退出。 tmux的环境命令本身并不相关,除非所请求的命令被记录为从中读取(参见 set-environment )。

服务器管理一组窗口,每个窗口代表一个由服务器创建的进程(不是 tmux 命令本身)。 session 只是一组逻辑窗口,也由服务器管理。

关于tmux - 如何在不同环境下启动两个 tmux session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506708/

相关文章:

tmux - 是否可以向 tmux 添加自定义命令?

tmux - Mosh 登录自动重新附加 tmux session

path - 如何防止 Tmux 用重复的路径填充全局 PATH 变量?

tmux - 使 tmux 仅在状态返回时监视事件

google-compute-engine - Google Compute Engine - 使用启动脚本启动 tmux

shell - Tmux 恢复创建一个空 session

tmux - 如何同时启动两个或多个 tmux(或 tmuxinator) session ?

shell - 如何在建立 mosh 连接时运行复杂的命令?

session - 有没有办法设置 tmux Pane 的名称?然后按名称在脚本中引用该 Pane ?

macos - 带有 tmux/tmuxinator 和 iTerm2 的多个选项卡