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에는 변경 사항을 설명할 때 몇 가지 특이한 점이 있습니다. 변경 사항은 셸이 외부 명령을 시작한 후에만 반영됩니다(외부 명령이어야 하며 하위 셸을 분기하는 것만으로는 충분하지 않거나 실행되지 않습니다). 내장 함수).

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

관련 정보