2011-12-27 55 views
28

或者至少它的一部分,这是有道理的。如何在当前环境下启动tmux?

更具体地说,我有一些环境变量,已通过运行脚本导出,为当前任务创建适当的环境。当我运行tmux时,无论在全局还是会话环境中都无法看到这些变量。当然,我可以再次运行此脚本,但...

我满意,如果我能在我的.tmux.conf文件但指定特定的增值经销商:

set-environment VAR $VAR 

不做我的期望。

在此先感谢:)

啊,我想我知道为什么。

当开始第二个tmux会话时,比如说在另一个终端中,它会从第一个终端复制环境。第一个很大程度上采用了调用shell的当前环境,并为其添加了一些tmuxiness。

我目前的解决方法是停止并开始我的tmux会话,当我需要改变环境。

+0

感谢提醒乔治。 – Phluks 2013-04-23 08:12:53

+3

对于我想要实现的目标,有一种更简单的方法。使用'-L'(或'-S')选项。 这些启动一个新的服务器与当前的环境。防爆。 'tmux -L newenv' 每个封装都会在该套接字的服务器上创建一个新的会话,并具有相同的环境。 (您可以选择您自己的姓名) 'tmux -L newenv list-sessions, 列出该特定服务器上的会话。 ...等等 – Phluks 2013-04-23 08:18:34

回答

54

您应该配置tmux会话选项update-environment以包含创建新会话时要更新的变量。默认值为包括几个常见的X11和SSH变量:

DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY 

要添加变量,使用set-optionTMUX命令其-g-a标志(附加到现有的“全球”(默认)值)。在你~/.tmux.conf

set-option -ga update-environment ' YOUR_VAR' 

一定要包括领先的空间,使您的变量名称从默认值后名称分开。

+0

优秀的答案。谢谢。 – Phluks 2012-03-25 19:40:58

+3

伟大的回应。一个注意事项:当tmux服务器已经运行时,〜/ .tmux.conf文件将不会被读取,所以像这样的变化不会生效。我原本以为它会在'tmux attach-session'期间被读取,但它没有被应用。 – Wade 2012-05-18 17:14:16

+0

对不起,这个手册页说:“更新环境会话选项可用于在创建新会话或旧的重新连接时从客户端更新会话环境”。这表明它应该在重新连接到_existing_会话时更新它们,但它似乎并不如此。有任何想法吗? – sjbx 2013-01-29 13:10:43

相关问题