Shell 将环境变量设置为tmux状态
我试图在我的tmux状态中显示两个不同的时区。我有一个命令,它使用unixShell 将环境变量设置为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
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状态栏配置,它也不起作用,由多个命令组成。但它在我的环境中起作用。对不起,我不知道有什么问题,也许我需要花点时间来解决。也许我想不出来@米凯布