bash terminal [\ t] (hora) não é o mesmo fuso horário que 'date'

4

No meu arquivo .bashrc, configurei como gostaria que meu prompt fosse exibido. Meu .bashrc é originado em .bash_profile. O comando no arquivo .bashrc é:

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

Troquei o fuso horário do usuário (para mim) para GMT + 0 usando o tzselect. O problema que estou tendo é que usando o comando date eu estou recebendo o horário GMT (que eu estou satisfeito com), mas o prompt do terminal ainda está na hora do sistema (mesmo depois de fazer login e logout), que não estou satisfeito com .

Como posso fazer com que o terminal exiba a hora no formato de hora que eu, o usuário, estou especificando?

    
por DanCat 30.05.2012 / 23:34

1 resposta

5

Você não diz como definir o fuso horário, mas desde que você o definiu para seu próprio usuário, isso deve ser definido com a variável TZ . Bash (pelo menos a versão 4.1.5) tem algumas peculiaridades quando se trata de levar em conta uma mudança de TZ : a mudança só é refletida após o shell ter iniciado um comando externo (tem que ser um comando externo, forçando um subshell não é suficiente, nem está executando built-ins).

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

Portanto, se você definir TZ no seu .bash_profile e não iniciar um comando externo, ainda verá a hora no antigo fuso horário no primeiro prompt.

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
    
por 31.05.2012 / 02:06