如何更改用户时区?


11

我知道(例如在Debian中)可以使用它dpkg-reconfigure tzdata来更改系统的时区,但是我想知道如何更改用户的时区(如果Linux / Unix完全支持这种想法)。

我通常通过ssh远程在服务器上工作,并且鉴于服务器内部使用UTC(文件,...)并且时区相当肤浅,因此我希望根据所连接的位置查看所需时区中的时间。这可能吗?


你尝试了什么?您甚至根本没有在网络上搜索“ ssh传递TZ信息”吗?
Anthon 2014年

Answers:


13

使用TZ环境变量。例如:

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

的可能值TZ位于目录中/usr/share/zoneinfo(例如,参见的存在/usr/share/zoneinfo/US/Pacific


就我而言,date给出的时区和时间与有所不同uname -a。为什么会这样呢?
Geremia

8

首先,您需要为ssh服务器和ssh客户端进行一些配置。

在Server的中/etc/ssh/sshd_config,确保接受TZ变量:

AcceptEnv LANG LC_* TZ

在客户端的/etc/ssh/ssh_config或中~/.ssh/config,请确保您发送TZ变量:

SendEnv TZ

(默认设置通常是不从客户端发送任何内容,并在服务器上不接受任何内容。)

然后为ssh命令使用别名以TZssh会话中使用当前会话。将此行添加到.bashrc文件:

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

或将此用于系统没有/etc/timezone

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

然后,每次您ssh访问远程服务器时,服务器上的时间将根据您的本地时区显示。


您还可以使用TZ=$(date +%Z)大多数最新版本(Linux / * BSD / Solaris),这将在/etc/timezone尚未完成的系统上更好地工作。
spuratic先生2014年

温馨的提示。记住要重新启动sshd才能使更改生效。在ubuntu上“ service ssh restart”
cavalcade
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.