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

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

在我的 .bashrc 文件中,我配置了提示符的显示方式。我的 .bashrc 源自 .bash_profile。 .bashrc 文件中的命令是:

PS1='[\t] \u@\h is $PWD :: '

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

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

答案1

您没有说明如何设置时区,但由于您是为自己的用户设置时区,因此必须通过设置变量来设置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

因此,如果您进行了设置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

相关内容