Verwenden von Umgebungsvariablen in Shell-Befehlen der Tmux-Statusleiste


10

Ich versuche, eine tmux-Statusleiste zu erstellen, die drei Zeitzonen anzeigt : US Eastern Time :: UTC :: Central European Time. Bei Verwendung der TZUmgebungsvariablen zeigt der dateBefehl die Zeit in einer bestimmten Zeitzone an.

Ich habe versucht, dies mit dieser Einstellung für tmux.conf zu tun:

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

Das Übergeben TZ=foofunktioniert jedoch nicht innerhalb von #(…). (Ich bekomme den Server dateanstelle von dem, was ich erwartet hatte). Irgendwelche Vorschläge?

Antworten:


16

Tmux erweitert Zeitformate mit strftimein status-leftund status-rightbevor es erweitert wird #(…)und andere scharfe Escape-Sequenzen. Wird %H:%Malso zuerst auf die Ortszeit erweitert und dateläuft mit einem Argument, das bereits numerisch ist.

Verdoppeln Sie die Prozentzeichen.

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

Ich bin nicht mit tmux vertraut, aber ich denke, das Problem ist, dass #()es nicht so funktioniert wie $()in der Shell.

Das Problem kann gelöst werden, indem die Verwendung einer Shell erzwungen wird:

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

Leider funktioniert das nicht (in tmux 1.6, Gentoo). Es wird immer noch das UTC-Datum gedruckt.
— Excalibur

@Excalibur Ziemlich seltsam. Versuchen Sie, ein Wrapperscript (mit TZ=Europe/Belgrade date +%H:%M) und#(/path/to/wrapperscript)
— Hauke ​​Laging

Ja, diese Lösung ist mir eingefallen. Obwohl diese tmux.conf dynamisch mit Chef festgelegt wird, zögere ich, externe Abhängigkeiten hinzuzufügen. Vielleicht sollte ich ein Problem mit tmux einreichen. Trotzdem danke!
— Excalibur
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.