Jak zmienić strefę czasową użytkownika?

11

Wiem, że (na przykład w Debianie) można użyć dpkg-reconfigure tzdatado zmiany strefy czasowej systemu, ale zastanawiam się, jak można zmienić strefę czasową użytkownika (jeśli Linux / Unix w ogóle obsługuje taki pomysł).

Zwykle pracuję na serwerze zdalnie przez ssh i biorąc pod uwagę, że serwer współpracuje z UTC wewnętrznie (pliki, ...), a strefy czasowe są raczej powierzchowne, chciałbym zobaczyć czasy w wybranej strefie czasowej w zależności od tego, z którego się łączę. czy to możliwe?

Loax
źródło
Co próbowałeś Czy w ogóle szukałeś „ssh przekazujących informacje TZ” w Internecie?
Anthon

Odpowiedzi:

13

Użyj TZzmiennej środowiskowej. Na przykład:

bash$ export TZ=US/Pacific
bash$ date
Mon Mar  3 00:31:17 PST 2014
bash$ export TZ=US/Eastern
bash$ date
Mon Mar  3 03:33:06 EST 2014

Możliwe wartości dla TZznajdują się w katalogu /usr/share/zoneinfo(patrz na przykład istnienie /usr/share/zoneinfo/US/Pacific)

Samiam
źródło
W moim przypadku datepodaje inną strefę czasową i czas niż uname -a. Dlaczego miałoby to być?
Geremia
8

Po pierwsze potrzebujesz konfiguracji dla serwera ssh i klienta ssh.

W Server, w /etc/ssh/sshd_config, upewnij się, że akceptujesz TZzmienną:

AcceptEnv LANG LC_* TZ

W kliencie, w /etc/ssh/ssh_configlub ~/.ssh/configupewnij się, że wysyłasz TZzmienną:

SendEnv TZ

(Domyślne ustawienia to zazwyczaj brak wysyłania żadnego z klienta i brak akceptacji na serwerze).

Następnie zrobić alias dla sshpolecenia używać prądu TZw sshsesji. Dodaj tę linię do .bashrcpliku:

alias ssh='TZ=${TZ:-"$(cat /etc/timezone)"} ssh'

lub użyj tego, jeśli system nie ma /etc/timezone:

alias ssh='TZ=${TZ:-"$(date +%Z)"} ssh'

Następnie za każdym razem ssh, gdy przechodzisz na serwer zdalny, czas na serwerze będzie wyświetlany na podstawie Twojej lokalnej strefy czasowej.

Cuonglm
źródło
Możesz także używać TZ=$(date +%Z)z większością aktualnych wersji (Linux / * BSD / Solaris), będzie to działać lepiej na systemach, na których /etc/timezonenie jest to zrobione.
mr. Spuratic
Przyjazne przypomnienie Pamiętaj, aby ponownie uruchomić sshd, aby zmiany odniosły skutek. Na Ubuntu „service ssh restart”
cavalcade