在我的 .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