(免责声明:我完全知道我在下面描述的问题有解决方案,涉及编写和调用与正在运行的 tmux 服务器交互的 shell 脚本,或者在启动 tmux 服务器之前设置必要的环境变量。我特意发布了这个问题看看是否可以在不使用此类脚本的情况下解决此问题。)
在我的.tmux.conf文件中,我试图VALUE根据FOO在调用 tmux 之前是否设置了环境变量,将局部变量设置为不同的值。然后我想VALUE在其他 tmux 命令中使用。不幸的是,我要么无法VALUE正确设置,要么在设置后访问它。
根据我在联机帮助页和其他包含示例 tmux 代码的问答帖子中找到的内容,有多种方法可以实现上述内容。
我首先尝试使用该if-shell命令。我尝试在带有和不带有-b标志的情况下使用此命令;两种情况下的结果都是一样的。
我从示例中看到,我可以使用语法分配变量VALUE=bar。鉴于此,这是我的配置的一个最小示例:
if-shell '[ -z "$FOO" ]' \
'VALUE=bar' \
'VALUE=baz'
set-environment -g RESULT $VALUE
Run Code Online (Sandbox Code Playgroud)
终端会话:
$ echo $FOO
$ tmux
[detached (from session 0)]
$ tmux showenv -g VALUE
VALUE=bar
$ tmux showenv -g RESULT
RESULT=
$ killall tmux
$ …Run Code Online (Sandbox Code Playgroud) tmux ×1