Я пришел к заключению, что не возможно добавить новые команды непосредственно и в то же время для удаления любых дубликатов. Таким образом, мое решение состоит в том, чтобы выполнить следующие команды в некоторое время. или помещать его в мой crontab.
tac $HOME/.bash_history | awk '!seen[$0]++' | tac > $HOME/.hist_Temp
mv $HOME/.hist_Temp $HOME/.bash_history
Вышеупомянутая команда сохранит последнее вхождение команды и удалит любые повторения выше его из файла истории, не портя порядок.
Это происходит, вероятно, из-за изменения локали:
$ locale | grep LC_TIME
LC_TIME="en_GB.UTF-8"
$ who -b
system boot 2013-11-04 10:04
$ LC_TIME=C who -b
system boot Nov 4 10:04
Возможно, Ваша локаль была изменена и не вступила в силу до окончания перезагрузки (возможно, Вы не обновили свою среду после изменения). Что касается того, почему это выглядит по-другому в демоне, это, вероятно, имеет другое значение для LC_TIME или никакое значение вообще.
Можно получить дату с помощью чего-то вроде этого (дополнительно замена en_GB.UTF-8
с любой локалью, которая приводит к этому формату, так как у Вас не может быть той локали в Вашей системе):
$ LC_TIME=en_GB.UTF-8 who -b | awk '{ print $3 " " $4 }'
2013-11-04 10:04