Shell 将环境变量设置为tmux状态

Shell 将环境变量设置为tmux状态,shell,tmux,Shell,Tmux,我试图在我的tmux状态中显示两个不同的时区。我有一个命令,它使用unixdate实用程序,在shell中执行时可以工作 echo $(TZ=':US/Pacific' date '+%Z %H:%M:%S' && TZ=':Europe/London' date '+%Z %H:%M:%S') 生成:PDT 04:05:59英国夏令时12:05:59 然而,当我在tmux中执行此命令时,环境变量TZ似乎被破坏了 set -g status-right "#(echo $(TZ

我试图在我的tmux状态中显示两个不同的时区。我有一个命令,它使用unix
date
实用程序,在shell中执行时可以工作

echo $(TZ=':US/Pacific' date '+%Z %H:%M:%S' && TZ=':Europe/London' date '+%Z %H:%M:%S')
生成:
PDT 04:05:59英国夏令时12:05:59

然而,当我在tmux中执行此命令时,环境变量
TZ
似乎被破坏了

set -g status-right "#(echo $(TZ=':US/Pacific' date '+%Z %H:%M:%S' && TZ=':Europe/London' date '+%Z %H:%M:%S'))"
在我的tmux状态栏中显示:
PDT 04:09:01 PDT 04:09:01

我可以通过编写一个小型shell脚本来解决这个问题,该脚本一次执行一个本地化的日期命令,但我不想依赖额外的文件。我试过使用
eval
,但运气不好。任何帮助都将不胜感激

更新:

以下内容也不起作用

set -g status-right "#(echo $(TZ=':US/Pacific' date '+%Z %H:%M:%S')) #(echo $(TZ=':Europe/London' date '+%Z %H:%M:%S'))"

在我的环境中,
tmux
状态栏不能在状态栏中显示多行输出。它只显示输出的第一行。因此,我必须打印日期而不使用换行符,并连接输出

set -g status-right "#(echo -n $(TZ=':US/Pacific' date '+%Z %H:%M:%S ') && echo -n ' ' && echo -n $(TZ=':Europe/London' date '+%Z %H:%M:%S'))"

解决方案是在tmux通过strftime传递时间时,用另一个%转义%我认为问题不在于状态栏中的多行输出。我已经更新了这个问题,以显示另一个tmux状态栏配置,它也不起作用,由多个命令组成。但它在我的环境中起作用。对不起,我不知道有什么问题,也许我需要花点时间来解决。也许我想不出来@米凯布