bash 终端 [\t](时间)与“日期”不同时区

Dan*_*Cat 4 bash time timezone

在我的 .bashrc 文件中,我配置了我希望如何显示提示。我的 .bashrc 来自 .bash_profile。.bashrc 文件中的命令是:

PS1='[\t] \u@\h is $PWD :: '
Run Code Online (Sandbox Code Playgroud)

我使用 tzselect 将用户(对我而言)时区切换到 GMT+0。我遇到的问题是,使用 date 命令我得到了 GMT 时间(我很满意)但终端提示仍在系统时间上(即使在登录和注销后),我对此不满意.

如何让终端以我(用户)指定的时间格式显示时间?

Gil*_*il' 5

您没有说明如何设置时区,但是由于您为自己的用户设置了时区,因此必须通过设置TZ变量来实现。Bash(至少版本 4.1.5)在考虑TZ更改时有一些怪癖:更改仅在 shell 启动外部命令(它必须是外部命令,分叉子shell 不是足够了,也没有执行内置函数)。

bash-4.1$ PS1='\t '
12:31:05 export TZ=Asia/Tokyo
12:31:12
12:31:13 echo foo
foo
12:31:14 /bin/echo foo
foo
19:31:17
Run Code Online (Sandbox Code Playgroud)

因此,如果您TZ在您的设置中设置.bash_profile并且您没有碰巧启动外部命令,您仍然会在第一个提示处看到旧时区的时间。

export TZ=GMT
# Refresh bash's idea of $TZ for prompt display purposes.
# As of bash 4.1, this requires running an external command!
if [[ $- = *i* ]]; then command true; fi
Run Code Online (Sandbox Code Playgroud)