Затирание истории команд bash'a
NFS_Daemon 2 апреля, 2012 - 13:00
Доброго времени суток.
Подскажите как исправить поведение shell'a: при выборе предидущих команд и их редактировании они изменяются в списке команд.
Т.е.:
если я наберу сейчас
ls -l /var
затем нажму вверх, и исправлю /var на /usr, снова нажму enter, в истории (которая доступна по клавишам курсора) будет только одна команда (отредактированная).
А как сделать чтобы они дублировались, т.е. редактирование не изменяло существующую, а добавляло новую?
»
- Для комментирования войдите или зарегистрируйтесь
У меня помнит и то, и другое
У меня помнит и то, и другое — ничего не затирает
На всякий случай:
Пытался повторить описанную
Пытался повторить описанную мной процедуру и не смог выявить этот баг, потому что неправильно описал процедуру проверки.
Вот пример который проявляет баг:
Если сейчас нажать клавишу вверх и BackSpace'ом удалить /usr из последней команды, затем нажать вниз, ввести какую-нибудь команду (необязательно) то в истории вместо "ls /usr" будет команда "ls".
Т.е. баг проявляется при редактировании предидущих команд без их выполнения.
ага, так воспроизводится
ага, так воспроизводится
На правах вброса
Я натыкался на этот косяк ещё в AstraLinux «Смоленск». Списал на общую ущербность bash, ещё больше полюбил zsh.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Но у косяка есть костыль (к
Но у косяка есть костыль (к которому еще надо привыкнуть):
Если после того как одна из предидущих строк уже отредактирована, но выполнять ее нет необходимости, нажать [ctrl]+[c] то оригинал изменен не будет, и вновь появится "чистое" приглашение...
Переучиваться теперь.. :(
.
Не баг это, а фича. bash себя так ведет всегда, по крайней мере, с тех пор как я начал на это обращать внимание. Так что либо можно считать это "ущербностью" и переезжать на другой шелл, либо забить и пользоваться дальше.
.
А какие из шеллов не болеют забыванием истории при нескольких открытых сеансах?
Особенно при их некорректном разрыве.
А лучше с передачей истории из одного сеанса в другой (например, за счет общей истории на все сеансы и записи по факту запроса на исполнение).
zsh
zsh
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
bash тоже этим не болеет, его
bash тоже этим не болеет, его надо только перенастроить чтобы он историю записывал не перед закрытием, а после ввода каждой команды.
http://www.opennet.ru/base/sys/bash_tips.txt.html
У меня не воспроизводится.
У меня не воспроизводится. Делаю всегда одно и тоже:
inputrc:
bashrc:
Невоспроизводится потому что
Невоспроизводится потому что строки
в файле /etc/inputrc
изменяют поведение оболочки: после нажатия клавиши вверх можно только пролистывать историю (если зажать вниз нельзя вернутся в "пустое" приглашение, останавливается на последнем). Так что [ctrl]+[c] нажать все-равно придется.
Но за совет спасибо, если не ошибаюсь эти же строки включают поиск в истории в первым набраным символам.