Автор Тема: Дубли в истории команд bash  (Прочитано 2763 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн yoric

Дубли в истории команд bash
« : 16 Ноября 2015, 16:33:59 »
Здравия!
В .bash_history полно дублей, несмотря на "export HISTCONTROL=ignoreboth:erasedups" в .bashrc. После прогона "sort -u .bash_history > new-hist" размер снизился в 4 с лишним раза. Это ж сколько там дублей... А почему не работает-то?
 
Пользователи, которые поблагодарили этот пост: sidbar

Оффлайн oermolaev

Re: Дубли в истории команд bash
« Ответ #1 : 16 Ноября 2015, 20:04:49 »
"export HISTCONTROL=ignoreboth:erasedups" в .bashrc

попробуйте просто
HISTCONTROL=ignoreboth
без export, как в шаблоне /etc/skel/.bashrc
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #2 : 16 Ноября 2015, 20:38:02 »
Спасибо за наводку, наверное да, эти не стоит экспортировать...
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #3 : 18 Ноября 2015, 14:48:44 »
Всё равно пишет дубли... Наверное, не могут сосуществовать "ignoredups" & "erasedups".
Попробую просто
HISTCONTROL=erasedupsкоторый, насколько я понял докусентацию, с лихвой перекрывает "ignoredups".
 

Оффлайн oermolaev

Re: Дубли в истории команд bash
« Ответ #4 : 18 Ноября 2015, 15:07:48 »
yoric, зачем "ignoredups", зачем "erasedups"? Чем не нравится "ignoreboth"?
"ignoreboth" вполне работает.
Цитировать
A value of ignoreboth is shorthand for ignorespace and ignoredups.
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #5 : 18 Ноября 2015, 16:13:43 »
A value of ignoredups causes lines  matching  the  [color=red]previous[/color]  history entry to not be saved.Я так понимаю, что только два дубля подряд не пишутся.

A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved.  Any value not in the above list is  ignored.А это более многообещающе звучит ;D
 

Оффлайн oermolaev

Re: Дубли в истории команд bash
« Ответ #6 : 18 Ноября 2015, 16:22:47 »
Я так понимаю, что только два дубля подряд не пишутся.

практика показывает что это касается всех дублей. "erasedups" не пробовал
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #7 : 18 Ноября 2015, 16:29:05 »
У меня пока работает только отсутствие "ignorespace", сразу mc стал в историю испражняться. Попробую сейчас без erasedups.
Правда, ещё добавлено:
HISTIGNORE="&:ls:[bf]g:exit:ps:history:df:di:free:uptime:frm:from:lsmod:kill"но это вроде не должно влиять.

Cообщение объединено 18 Ноября 2015, 17:03:12
Не работает, хоть тресни... в .bash_history порядка 500 строк, запускаю команду, в точности как одна из уже имеющихся, дописывает её в конец, и все дела... Дальше не проверял, но этого уже достаточно, чтобы констатировать факт ненадлежащего исполнения своих обязанностей... Достаточно ведь перезапустить xterm в граф. сессии? А как оно будет выглядеть в случае нескольких шеллов одновременно, страшно и подумать... В общем, дело тёмное, сдаюсь :(
« Последнее редактирование: 18 Ноября 2015, 17:03:12 от yoric »
 

Оффлайн ogost

Re: Дубли в истории команд bash
« Ответ #8 : 19 Ноября 2015, 05:01:34 »
емнип по дефолту при наличии нескольких шеллов в хистори пишется только первый. есть возможность писать и все сессии, но получается каша. есть (был ранее, по крайней мере) костыль, который создает для каждой сессии отдельный .bash_history.
по идее должно быть достаточно перезапустить эмулятор, но если не получаться, то попробуйте перелогиниться. у меня HISTCONTROL=ignoreboth работает нормально, дублей не наблюдается.
ну и на всякий случай, не оскорбления для, а уточнения ради, вы же в хомяке правите .bashrc?

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #9 : 19 Ноября 2015, 07:25:27 »
Да, с точкой, свой личный, не общесистемный. Попробую перелогин.
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #10 : 22 Ноября 2015, 22:39:56 »
Разобрался вроде слегка, перелогин ни при чём,  Х-ах достаточно перезапустить терминал. Но дело вот в чём. Если не экспортировать эти HIST*, то всё работает, но если отсюда же запустить мс - естественно, его шелл про это ничего не знает и пишет всё подряд. Если без экспорта - тогда первый пишет. Можно как-нибудь одновременно и экспортировать и не экспортировать? Почитал man bash, вроде кроме "declare & local" не нашёл подобного, но это не то.
 

Оффлайн oermolaev

Re: Дубли в истории команд bash
« Ответ #11 : 22 Ноября 2015, 22:54:10 »
 

Оффлайн yoric

Re: Дубли в истории команд bash
« Ответ #12 : 22 Ноября 2015, 23:49:15 »
Ну разве что в глобальном попробовать...
 

Теги: