Est-ce que quelqu'un sait pourquoi bash a toujours la substitution d'historique activée par défaut? Mon .bashrc
a inclus set +H
depuis de nombreuses années, mais d'autres personnes sont toujours mordues par cette fonctionnalité.
Étant donné que presque tout le monde utilise des terminaux avec des fonctionnalités de copier-coller et que bash compilé avec la readline
bibliothèque et la substitution d'historique est activé par défaut uniquement dans les shells interactifs, y a-t-il vraiment une raison d'avoir cette fonctionnalité? Aucun des scripts existants ne serait cassé même s'il était désactivé par défaut pour tous les shells.
Essayez ceci si vous ne savez pas pourquoi la substitution d'historique est interrompue:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(Il est clair que la fonctionnalité a des problèmes majeurs si elle est désactivée par défaut pour tous les scripts et qu'une fonctionnalité existe pour vérifier les résultats avant d'exécuter:. shopt -s histverify
)
Voir également:
&
? Pourquoi devrais-je avoir besoin d'échapper ou de citer un nom de fichier contenant un ?
? Il existe des interfaces utilisateur pour les personnes qui pensent que c'est un problème.
!$
plusieurs fois par jour, et !!
assez souvent aussi. Je dois admettre que je n'utilise pas autant d'autres substitutions d'historique, mais je serais certainement mécontent si le comportement par défaut du shell que j'utilisais depuis des années changeait soudainement.
ls -l foo/bar/baz/weeble.cpp
avecless !$
de rappel de la commande et de l' éditer.