Czy ktoś wie, dlaczego bash nadal domyślnie włącza podstawianie historii ? Moje .bashrc
zawiera set +H
od wielu lat, ale niektóre inne osoby wciąż gryzą tę funkcję.
Biorąc pod uwagę, że prawie wszyscy używają terminali z funkcjami kopiuj-wklej i bash skompilowany z readline
biblioteką, a podstawianie historii jest domyślnie włączone tylko w interaktywnych powłokach, czy naprawdę jest jakiś powód, aby mieć tę funkcję w ogóle? Żaden z istniejących skryptów nie zostałby uszkodzony, nawet jeśli byłby domyślnie wyłączony dla wszystkich powłok.
Wypróbuj to, jeśli nie wiesz, dlaczego podstawienie historii jest zerwane:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(Oczywiście ta funkcja ma poważne problemy, jeśli jest domyślnie wyłączona dla wszystkich skryptów i istnieje funkcja umożliwiająca sprawdzenie wyników przed wykonaniem:. shopt -s histverify
)
Zobacz też:
&
? Dlaczego powinienem uciec lub podać nazwę pliku zawierającego ?
? Istnieją interfejsy dla osób, które uważają, że to problem.
!$
kilka razy dziennie, a także !!
dość często. Muszę przyznać, że nie używam tak często innych podstawień historii, ale na pewno byłbym niezadowolony, gdyby domyślne zachowanie powłoki używanej przez lata nagle uległo zmianie.
ls -l foo/bar/baz/weeble.cpp
zless !$
ni przypomnieć polecenia i edytować.