Tmuxステータスバーシェルコマンドでの環境変数の使用


10

3つのタイムゾーンを表示するtmuxステータスバーを作成しようとしています US Eastern Time :: UTC :: Central European TimeTZ環境変数を使用すると、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は期待したものの代わりにサーバーを取得します)。助言がありますか?

回答:


16

tmuxのは、との時間フォーマットを拡張strftimestatus-leftし、status-rightそれが拡大する前に#(…)、その他の鋭いエスケープシーケンス。したがって%H:%M、最初に現地時間に展開され、dateすでに数値である引数で実行されます。

パーセント記号を2倍にします。

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)"

1

私はtmuxに精通して#()いませんが、問題は$()シェルのように同じように機能しないことだと思います。

この問題は、シェルを強制的に使用することで解決できます。

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

残念ながら、これは機能しません(tmux 1.6、Gentoo)。まだUTC日付を印刷しています。
エクスカリバー

@Excaliburかなり奇妙です。ラッパースクリプト(を使用TZ=Europe/Belgrade date +%H:%M)を作成してみてください#(/path/to/wrapperscript)
Hauke Laging

ええ、その解決策は私に起こりました。このtmux.confはChefを使用して動的に設定されるので、外部の依存関係を追加するのをためらっています。おそらく私はtmuxに問題を報告する必要があります。ありがとう!
エクスカリバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.