Некоторые случаи bash изменяют историю команд при повторном использовании и редактировании предыдущей команды, другие, по-видимому, этого не делают. Я искал и искал, но не могу найти ничего, что говорит о том, как предотвратить изменение команд в истории, когда они повторно используются и редактируются.
Есть вопросы, подобные этому , но, похоже, это говорит о том, как справиться с редактируемой историей. Я только недавно столкнулся с экземпляром bash, который редактирует историю при повторном использовании команды - все предыдущие оболочки bash, которые я использовал (насколько я заметил), были настроены так, чтобы не изменять историю при повторном использовании и отредактируйте команду. (Возможно, я просто не уделял должного внимания своей истории раковины в течение последних 15 лет или около того ...)
Так что это, пожалуй, лучший вопрос: могу ли я сказать bash НИКОГДА не изменять историю - и если да, то как?
источник
history -p
для расширения истории, не затрагивая файл истории. Вы можете сделатьhistory -s
то же самое и добавить в историю без исполнения. Вы можете сделать,HISTIGNORE='start of a command I never want in history.*:command2.*'
чтобы сохранить некоторые команды из истории.set revert-all-at-newline on
в вопросе, который вы связываете, не решить вашу проблему? Можете показать как воспроизвести проблему? Обратите внимание, что вы также можете использоватьzsh
для поведения более в соответствии с тем, что вы хотите.history -p
нужно ли что-то делать для каждой команды, которую я хочу использовать повторно - это правильно? Если так, то это не совсем то, что я ищу. Как я уже упоминал, я использовал экземпляры bash, которые никогда не изменяют историю, когда команда повторно используется и редактируется.revert-all-at-newline
это то, что мне нужно. Если я отредактирую команду и нажму CTRL-C, чтобы отменить ее, я также не хочу, чтобы это влияло на историю. Раньше мне никогда не приходилось настраивать bash, чтобы не изменять историю, что является одной из причин, по которой я запутался в том, почему иногда новая установка ведет себя так, а иногда - в другом. Кстати, в экземпляре, который не редактирует историю при повторном использовании команды, abind -V | grep revert
указывает, чтоrevert-all-at-newline
установлено значение «off».bash
. Это все о readline. Существуют различные реализацииreadline
библиотеки, и она также имеет свой собственный набор настроек (их много) и собственный файл конфигурации. Я не уверен точно, является ли это настройкой или просто различием реализации, но вы должны искать в документации по readline, а не в bash.Ответы:
Оказывается,
revert-all-at-newline
это ответ. Мне нужно было включитьset revert-all-at-newline on
в мой~/.inputrc
файл, так как использованиеset
команды в приглашении bash не имело никакого эффекта. (Тогда, конечно, мне пришлось запустить новую оболочку.)Кроме того, я обнаружил, что
~/.inputrc
загружается вместо,/etc/inputrc
если присутствует, что означает, что любые значения по умолчанию, определенные в последнем, больше не активны при создании~/.inputrc
. Чтобы это исправить, начните~/.inputrc
с$include /etc/inputrc
.Спасибо @ StéphaneChazelas за указание в правильном направлении.
источник
В ~ / .bashrc вы можете добавить
источник
histappend
включен, но моя история все еще показывает изменения предыдущих команд.