Làm thế nào để thay đổi múi giờ người dùng?


11

Tôi biết rằng (ví dụ trong Debian) người ta có thể sử dụng dpkg-reconfigure tzdatađể thay đổi múi giờ của hệ thống nhưng tôi tự hỏi làm thế nào người ta có thể thay đổi múi giờ của người dùng (nếu Linux / Unix hoàn toàn hỗ trợ ý tưởng như vậy).

Tôi thường làm việc trên máy chủ từ xa thông qua ssh và được cho rằng máy chủ hoạt động với UTC bên trong (tệp, ...) và múi giờ khá hời hợt, tôi muốn xem thời gian trong múi giờ mong muốn của mình tùy thuộc vào nơi tôi kết nối. Điều này có thể không?


Bạn đã thử gì? Bạn thậm chí đã tìm kiếm "ssh truyền thông tin TZ" trên web chưa?
Anthon

Câu trả lời:


13

Sử dụng TZbiến môi trường. Ví dụ:

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

Các giá trị có thể TZcó trong thư mục /usr/share/zoneinfo(xem, ví dụ, sự tồn tại của /usr/share/zoneinfo/US/Pacific)


Trong trường hợp của tôi, dateđưa ra một thời gian khác nhau - thời gian và thời gian hơn uname -a. Tại sao lại như vậy?
Geremia

8

Trước tiên, bạn cần một số cấu hình cho máy chủ ssh và máy khách ssh.

Trong Máy chủ, trong /etc/ssh/sshd_config, đảm bảo bạn chấp nhận TZbiến:

AcceptEnv LANG LC_* TZ

Trong Máy khách, trong /etc/ssh/ssh_confighoặc ~/.ssh/config, đảm bảo bạn gửi TZbiến:

SendEnv TZ

(Mặc định thường không gửi từ khách hàng và không chấp nhận trên máy chủ.)

Sau đó tạo bí danh cho sshlệnh để sử dụng hiện tại của bạn TZtrong sshphiên. Thêm dòng này vào .bashrctập tin:

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

hoặc sử dụng điều này cho hệ thống không có /etc/timezone:

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

Sau đó, mỗi khi bạn sshđến máy chủ từ xa, thời gian trên máy chủ sẽ hiển thị dựa trên múi giờ địa phương của bạn.


Bạn cũng có thể sử dụng TZ=$(date +%Z)với hầu hết các phiên bản (Linux / * BSD / Solaris), điều này sẽ hoạt động tốt hơn trên các hệ thống /etc/timezonekhông thực hiện được.
mr.spuratic

Nhắc nhở thân thiện. Nhớ khởi động lại sshd để các thay đổi có hiệu lực. Trên Ubuntu "dịch vụ ssh khởi động lại"
cavalcade
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.