[unix] Tmux 상태 표시 줄 쉘 명령에서 환경 변수 사용

세 개의 시간대를 표시하는 tmux 상태 표시 줄을 만들려고합니다
US Eastern Time :: UTC :: Central European Time. 은 Using TZ환경 변수하면 만드는 date명령은 특정 시간대의 시간을 보여줍니다.

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

그러나 TZ=foo내부 에서는 전달 이 작동하지 않습니다 #(…). ( date예상 한 것 대신 서버 를 얻습니다 ). 어떤 제안?



답변

TMUX 함께 시간 형식을 확장 strftimestatus-left하고 status-right그것을 확장하기 전에 #(…)다른 날카로운 이스케이프 시퀀스. 따라서 %H:%M현지 시간으로 먼저 확장되고 date이미 숫자 인 인수로 실행됩니다.

퍼센트 부호를 두 배로하십시오.

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


답변

나는 tmux에 익숙 #()하지 않지만 문제는 $()쉘에서 와 같은 방식으로 작동하지 않는다고 생각합니다 .

쉘을 사용하여 문제를 해결할 수 있습니다.

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


답변