Кто-нибудь знает, почему в 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 !$чем вспомнить команды и редактировать его.