Estou ciente de que é possível adicionar registros de data e hora a bash_history.
Os exemplos que vi até agora sempre usam a hora atual do sistema. E aqui está o problema para mim: por um lado, gosto de manter os logs em UTC porque facilita muito a correlação de coisas. Por outro lado, estou trabalhando em um fuso horário não UTC, portanto, a hora do meu sistema não está definida como UTC.
Existe uma maneira de definir seu sistema para, por exemplo, UTC + 1, mas ainda registrar bash_history usando a hora UTC?
Ok, então com base na resposta do @meuh encontrei uma maneira de alcançar o que procurava:
- Defina HISTTIMEFORMAT como quiser. Ele controla apenas a formatação (duh!). Eu escolhi:
HISTTIMEFORMAT='%F %T %z '
- Para exibir o histórico em UTC em um sistema em outro fuso horário, defina a variável TZ como UTC apenas para esse comando:
$TZ='UTC' history
....
1040 2023-05-27 12:30:02 +0000 cat ~/.bashrc
1041 2023-05-27 12:30:11 +0000 grep -i hist ~/.bashrc
1042 2023-05-27 12:36:21 +0000 TZ='UTC' history
Execute o histórico sem definir TZ e você obterá o horário apresentado em seu TZ atual (compare o fuso horário numérico na saída com o anterior):
$ history
...
1040 2023-05-27 14:30:02 +0200 cat ~/.bashrc
1041 2023-05-27 14:30:11 +0200 grep -i hist ~/.bashrc
1042 2023-05-27 14:36:21 +0200 TZ='UTC' history
Você não precisa fazer nada, porque os timestamps no arquivo de histórico são sempre salvos em segundos desde a época do Unix. É somente quando você os imprime que eles são convertidos para qualquer fuso horário em que você esteja. Você deve ser capaz de ver isso comparando a saída de com o
date +%s
número no arquivo de histórico (salve no arquivo comhistory -w
). Ou useHISTTIMEFORMAT='%s: '
para ver esse número em vez de qualquer formato de data convertido que você esteja vendo no momento. O número não mudará se você alterar o fuso horário, por exemplo: