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?

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.