Environment-Variables
在 Tmux 狀態欄 shell 命令中使用環境變數
我正在嘗試創建一個顯示三個時區的 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 使用
strftime
instatus-left
和status-right
before 它擴展#(…)
以及其他尖銳的轉義序列擴展時間格式。所以%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')