Weiß jemand, warum in der Bash immer noch die Ersetzung des Verlaufs standardmäßig aktiviert ist? Meine .bashrc
hat set +H
für viele, viele Jahre aufgenommen, aber einige andere Leute werden immer noch von dieser Funktion gebissen.
Angesichts der Tatsache, dass so gut wie alle Benutzer Terminals mit Copy-Paste-Funktionen und Bash -Funktionen verwenden, die mit readline
Bibliotheks- und Verlaufssubstitution kompiliert wurden, ist diese Funktion standardmäßig nur in interaktiven Shells aktiviert. Gibt es dann überhaupt einen Grund, diese Funktion zu nutzen? Keines der vorhandenen Skripte würde beschädigt, selbst wenn dies standardmäßig für alle Shells deaktiviert wäre.
Versuchen Sie dies, wenn Sie nicht wissen, warum die Ersetzung der Historie nicht funktioniert:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(Offensichtlich hat die Funktion schwerwiegende Probleme, wenn sie standardmäßig für alle Skripte deaktiviert ist und eine Funktion zur Überprüfung der Ergebnisse vor der Ausführung vorhanden ist:. shopt -s histverify
)
Siehe auch:
&
? Warum muss ich einen Dateinamen mit einem Escape-Zeichen oder einem Anführungszeichen setzen ?
? Es gibt Benutzeroberflächen für Personen, die dies für ein Problem halten.
!$
mehrmals am Tag und !!
ziemlich oft auch. Ich muss zugeben, dass ich nicht so oft andere History-Substitutionen verwende, aber ich wäre definitiv unglücklich, wenn sich das Standardverhalten der Shell, die ich seit Jahren verwende, plötzlich ändern würde.
ls -l foo/bar/baz/weeble.cpp
mitless !$
als Rückruf der Befehl und bearbeiten es.