在tmux状态中设置环境变量

时间:2017-06-29 11:10:31

标签: shell tmux

我正在尝试在我的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 BST 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'))"

2 个答案:

答案 0 :(得分:0)

在我的环境中,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'))"

答案 1 :(得分:0)

解决方案是使用另一个%来逃避%,因为tmux通过strftime传递时间