【问题标题】:Set environment variable in tmux status在 tmux 状态下设置环境变量
【发布时间】:2017-06-29 11:10:30
【问题描述】:

我试图在我的 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'))"

【问题讨论】:

    标签: shell tmux


    【解决方案1】:

    解决方案是用另一个 % 转义 %,因为 tmux 通过 strftime 传递时间

    【讨论】:

      【解决方案2】:

      在我的环境中,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 状态栏配置,该配置也不起作用并且包含多个命令。
      • 但它适用于我的环境。抱歉,我不知道问题所在,也许我需要一些时间才能弄清楚。也许我想不通。 @mikeecb
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2014-02-03
      • 2018-12-15
      • 2018-07-13
      • 2014-12-17
      相关资源
      最近更新 更多