Environment-Variables

在 Tmux 狀態欄 shell 命令中使用環境變數

  • February 3, 2017

我正在嘗試創建一個顯示三個時區的 tmux 狀態欄: US Eastern Time :: UTC :: Central European Time. 使用TZ環境變數使date命令顯示給定時區的時間。

我試圖用這個 tmux.conf 設置這樣做:

set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%H:%M) :: #(date -u +%H:%M) UTC :: #(TZ=Europe/Belgrade date +%H:%M)"

但是,傳遞TZ=foo#(…). (我得到了伺服器date而不是我所期望的)。有什麼建議麼?

Tmux 使用strftimeinstatus-leftstatus-rightbefore 它擴展#(…)以及其他尖銳的轉義序列擴展時間格式。所以%H:%M首先擴展到本地時間,並date使用已經是數字的參數執行。

將百分號加倍。

set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%%H:%%M) :: #(TZ=UTC date -u +%%H:%%M) UTC :: #(TZ=Europe/Belgrade date +%%H:%%M)"

我對 tmux 不熟悉,但我想問題是它#()不像$()在 shell 中那樣工作。

該問題可以通過強制使用 shell 來解決:

#(bash -c 'TZ=Europe/Belgrade date +%H:%M')

引用自:https://unix.stackexchange.com/questions/115779