Utilisation de variables d'environnement dans les commandes shell de la barre d'état Tmux


10

Je cherche à créer un état tmux bar qui montre trois fuseaux horaires: US Eastern Time :: UTC :: Central European Time. L'utilisation de la TZvariable d'environnement permet à la datecommande d'afficher l'heure dans un fuseau horaire donné.

J'essayais de le faire avec ce paramètre 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)"

Cependant, le dépassement TZ=foone fonctionne pas à l'intérieur de #(…). (J'obtiens le serveur dateau lieu de ce que j'attendais). Aucune suggestion?

Réponses:


16

Tmux étend les formats de temps avec strftimedans status-leftet status-rightavant qu'elle ne se développe #(…)et d' autres séquences d'échappement vives. So %H:%Mest d'abord étendu à l'heure locale et dates'exécute avec un argument déjà numérique.

Doublez les signes de pourcentage.

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

Je ne connais pas tmux mais je suppose que le problème est que #()cela ne fonctionne pas de la même manière que $()dans le shell.

Le problème peut être résolu en forçant l'utilisation d'un shell:

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

Malheureusement, cela ne fonctionne pas (dans tmux 1.6, Gentoo). Il imprime toujours la date UTC.
Excalibur

@Excalibur Assez étrange. Essayez de créer un wrapperscript (avec TZ=Europe/Belgrade date +%H:%M) et#(/path/to/wrapperscript)
Hauke ​​Laging

Oui, cette solution m'est venue à l'esprit. Bien que ce tmux.conf soit défini dynamiquement à l'aide de Chef, j'hésite à ajouter des dépendances externes. Je devrais peut-être déposer un problème avec tmux. Merci quand même!
Excalibur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.