tmux 为不同的会话设置会话变量

tmux set session variable for different sessions

我只是想为 tmux 会话设置一个 shell 环境。起初它像预期的那样工作:

export MY_VARIABLE=123
tmux new-session

# in session
echo $MY_VARIABLE
-> 123

现在我分离会话并创建第二个会话:

tmux detach

echo $MY_VARIABLE
-> 123

export MY_VARIABLE=456

echo $MY_VARIABLE
-> 456

tmux new-session

# in new session
echo $MY_VARIABLE
-> 123

# list session to see it is really a new one
tmux list-sessions
-> 0: 1 windows ...
-> 1: 1 windows ... (attached)

如果我退出旧会话(不是分离),那么它将按预期工作。看起来变量在会话之间是同步的?在启动 tmux 会话后,如何将其拆分为单独的 $MY_VARIABLE?

看起来这是 tmux 的一个特性:变量共享。通过连接不同的socket,可以设置不同的变量(通过this stackexchange question发现):

export MY_VARIABLE=123
tmux -L socket_name new-session

# in session
echo $MY_VARIABLE
-> 123

tmux -L socket_name detach

export MY_VARIABLE=456

tmux -L another_socket new-session

# in new session
echo $MY_VARIABLE
-> 456