Utilizzo delle variabili d'ambiente nei comandi della shell della barra di stato di Tmux


10

Sto tentando di creare un tmux barra di stato che mostra tre fusi orari: US Eastern Time :: UTC :: Central European Time. L'uso della TZvariabile d'ambiente fa sì che il datecomando mostri l'ora in un determinato fuso orario.

Stavo tentando di farlo con questa impostazione 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)"

Tuttavia, il passaggio TZ=foonon funziona all'interno di #(…). (Ottengo il server dateinvece di quello che mi aspettavo). Eventuali suggerimenti?

Risposte:


16

Tmux espande i formati temporali con strftimedentro status-lefte status-rightprima che si espanda #(…)e altre sequenze di escape nitide. Quindi %H:%Mviene prima esteso all'ora locale e dateviene eseguito con un argomento già numerico.

Raddoppia i segni di percentuale.

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

Non ho familiarità con tmux ma immagino che il problema sia che #()non funziona allo stesso modo $()della shell.

Il problema può essere risolto forzando l'uso di una shell:

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

Purtroppo questo non funziona (in tmux 1.6, Gentoo). Sta ancora stampando la data UTC.
Excalibur,

@Excalibur Abbastanza strano. Prova a creare un wrapperscript (con TZ=Europe/Belgrade date +%H:%M) e#(/path/to/wrapperscript)
Hauke ​​Laging il

Sì, quella soluzione mi è venuta in mente. Sebbene poiché tmux.conf sia impostato in modo dinamico usando Chef, sono titubante ad aggiungere dipendenze esterne. Forse dovrei presentare un problema con tmux. Grazie comunque!
Excalibur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.