Die Bash-Tab-Vervollständigung erweitert "~" zu "/ home / ___", wenn dies vorher nicht der Fall war

13

Wenn ich ~/biTabvorher getippt hätte , wäre daraus geworden ~/bin. Es heute jedoch begann Drehen ~/biTabin /home/username/bin.

Ich hätte lieber das erste, aber ich bin nicht sicher, was passiert ist ... Ich habe ein Skript hinzugefügt, um meine Bash-Vervollständigung zu bearbeiten, aber ich habe es von meinem entfernt ~./bashrcund den Server neu gestartet.

Weiß jemand, was dazu führen würde? Oder wie würde ich es wieder ändern?

EDIT Also habe ich herausgefunden, was das verursachen könnte ... es hat damit zu tun /etc/bash_completionund mit solchen Dingen. Wenn ich das tue bind -v, zeigt es an, dass die Tilde-Erweiterung ausgeschaltet ist.

Also denke ich, wenn ich das bearbeite (wie ein Hack), wird es verschwinden. Aber das befriedigt eigentlich nichts - wie kam es überhaupt zu dieser Veränderung? Ich habe nie etwas als ausgeführt sudo, und nach mehreren Herunterfahren und Neustarts bleibt dieses Verhalten bestehen.

Justin L.
quelle

Antworten:

8

Sie erwähnen nicht, welche Distribution Sie verwenden (bitte geben Sie diese Informationen in Ihre Frage ein), aber ich habe nach dem Ausführen von Updates auf meinen Systemen ein ähnliches Verhalten festgestellt.

Ich vermute, Sie haben ein Systemupdate ausgeführt, oder wenn es automatisch ausgeführt wurde, wurde das Paket "bash-completion" aktualisiert, das dieses Verhalten hinzugefügt hat. In Red Hat-Derivaten finden Sie die Paketdokumentation in /usr/share/doc/PACKAGENAME. In my /usr/share/doc/bash-completion-1.3/CHANGESwerden neue Änderungen über ein Änderungsprotokollformat aufgelistet.

Anstatt Änderungen vorzunehmen /etc/bash_completion, die beim nächsten Paket-Upgrade möglicherweise überschrieben werden, können Sie ~/.inputrcdie Tilde-Erweiterung deaktivieren. Ich habe bestätigt, dass bash_completion-1.3.6 dies auf meiner Fedora 16-Box honoriert.

set expand-tilde off

BEARBEITEN

Ihr Kilometerstand kann variieren mit ~/.inputrc. Bash verfügt über Funktionen, die dieses Verhalten möglicherweise außer Kraft setzen, je nachdem, was Sie ausführen möchten (z. B. ein Programm gegen eine Datei oder ein Verzeichnis). In dieser Diskussion zu Super User SE wird eine ähnliche Frage behandelt, wenn ein vimBefehl automatisch vervollständigt wird . In diesem Fall löste das Originalposter das Problem, indem eine benutzerdefinierte Funktion hinzugefügt wurde ~/.bashrc.

George M
quelle
1
Das letzte bisschen hängt auch von der Distribution ab. Einige Distributionen (zum Beispiel Gentoo) machen tatsächlich das Richtige und überschreiben keine Dateien unter, /etcwenn sie geändert wurden.
njsg
1
Dies tun auch Red Hat-Derivate. Die Ersatzkonfigurationsdatei xxxwird dann aufgerufen, xxx.rpmnewwenn die Konfigurationsänderungen nicht kritisch sind. Wenn die Konfigurationsänderungen wirklich erforderlich sind, wird das Original umbenannt xxx.rpmsaveund xxxist die Datei aus dem Paket.
Vonbrand
expand-tilde funktioniert nicht, am Ende habe ich nur den Code gelöscht, der die Erweiterung von meinem Computer ausgeführt hat. Es wird wahrscheinlich bei Systemaktualisierungen nicht funktionieren, aber: |
Justin L.