Uso de variables de entorno en los comandos de shell de la barra de estado de Tmux

10

Estoy intentando crear un estado de tmux de barras que muestra tres zonas horarias: US Eastern Time :: UTC :: Central European Time. El uso de la TZvariable de entorno hace que el datecomando muestre la hora en una zona horaria determinada.

Intenté hacerlo con esta configuración 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)"

Sin embargo, pasar TZ=foono funciona dentro de #(…). (Obtengo el servidor en datelugar de lo que esperaba). ¿Alguna sugerencia?

Excalibur
fuente

Respuestas:

16

Tmux expande formatos de tiempo con strftimeen status-lefty status-rightantes de que se expande #(…)y otras secuencias de escape afilados. Por %H:%Mlo tanto, se expande primero a la hora local y se dateejecuta con un argumento que ya es numérico.

Duplica los signos de porcentaje.

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)"
Gilles 'SO- deja de ser malvado'
fuente
1

No estoy familiarizado con tmux, pero supongo que el problema es que #()no funciona de la misma manera que $()en el shell.

El problema se puede resolver forzando el uso de un shell:

#(bash -c 'TZ=Europe/Belgrade date +%H:%M')
Hauke ​​Laging
fuente
Desafortunadamente esto no funciona (en tmux 1.6, Gentoo). Todavía está imprimiendo la fecha UTC.
Excalibur
@Excalibur Bastante extraño. Intente crear un wrapperscript (con TZ=Europe/Belgrade date +%H:%M) y#(/path/to/wrapperscript)
Hauke ​​Laging
Sí, esa solución se me ocurrió. Aunque como este tmux.conf se configura dinámicamente con Chef, dudo en agregar dependencias externas. Quizás debería presentar un problema con tmux. Gracias sin embargo!
Excalibur