Кто-нибудь знает, почему в bash по-прежнему включена подмена истории ? My .bashrc
включил в set +H
течение многих лет, но некоторые другие люди все еще получают укус этой функции.
Учитывая, что почти все используют терминалы с функциями копирования и вставки, а bash, скомпилированный с readline
библиотекой, и подстановка истории включена по умолчанию только в интерактивных оболочках, есть ли какая-то причина вообще иметь эту функцию? Ни один из существующих сценариев не будет нарушен, даже если он был отключен по умолчанию для всех оболочек.
Попробуйте это, если вы не знаете, почему подмена истории нарушена:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(Очевидно, что у функции есть серьезные проблемы, если она отключена по умолчанию для всех сценариев, и существует функция для проверки результатов перед выполнением:. shopt -s histverify
)
Смотрите также:
&
? Почему мне нужно экранировать или указывать имя файла, содержащее ?
? Есть интерфейсы для людей, которые думают, что это проблема.
!$
несколько раз в день, и !!
довольно часто. Я должен признать, что я не использую другие замены истории, но я определенно был бы недоволен, если бы поведение оболочки по умолчанию, которое я использовал в течение многих лет, внезапно изменилось.
ls -l foo/bar/baz/weeble.cpp
сless !$
чем вспомнить команды и редактировать его.