2016-06-05 19 views
3

Wenn ich den Befehl echo $bash_ eingeben möchte, dann drücke ich Tab Schlüssel, die Autokomplettierung kann nicht auftreten.
Aber wenn ich Eingabe der Befehl echo $BASH_, dann so ich Tab drücken, wird die Liste Fertigstellung folgende Ausgabe:Warum kann Bash die Groß-/Kleinschreibung nicht ignorieren, wenn Tab-Vervollständigungsvariablen verwendet werden?

$BASH_ALIASES    $BASH_COMMAND    $BASH_SOURCE 
$BASH_ARGC     $BASH_COMPLETION_COMPAT_DIR $BASH_SUBSHELL 
$BASH_ARGV     $BASH_LINENO     $BASH_VERSINFO 
$BASH_CMDS     $BASH_REMATCH    $BASH_VERSION 

Und meine .inputrc Datei enthält die readline ignorecase Option, set completion-ignore-case on und die Vervollständigung von Dateinamen Groß- und Kleinschreibung ist in Ordnung .
Also möchte ich die variable name Registerkarte Abschluss kann den Variablenfall ignorieren.

Antwort

2

Es gibt Dateisysteme, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird. Auf solchen Systemen ist es sinnvoll, bei der Dateinamenvervollständigung zwischen Groß- und Kleinschreibung zu unterscheiden. In einer idealen Welt könnte bash erkennen, ob eine Komponente eines Dateipfads zwischen Groß- und Kleinschreibung unterscheidet, aber in der Praxis gibt es keine Standardschnittstelle, die diese Informationen bereitstellt. Bash greift also explizit auf Groß- und Kleinschreibung zurück: (Zitat von bash manual , Hervorhebung hinzugefügt)

completion-ignore-case
    Wenn auf on gesetzt, führt readline- Dateinamen Anpassung und Abschluss in Groß- und Kleinschreibung Mode. Der Standardwert ist 'aus'.

In ähnlicher Weise können Sie Glob Expansion und/oder Fallmuster so konfigurieren, dass Groß- und Kleinschreibung nicht berücksichtigt wird.

Aber Sie können nicht bash Variablen Groß-und Kleinschreibung beachten. $bash und sind verschiedene Variablen. Ähnlich mit Bash-Funktionsnamen, Bash-Built-In-Namen und Bash-Schlüsselwörtern. Bash kann Tab-Vervollständigung mit all diesen durchführen, aber unabhängig von der Konfiguration der Groß-/Kleinschreibung des Dateinamens, ist die Vervollständigung der Tab-Groß- und Kleinschreibung von Bedeutung.

Während das wie eine vernünftige Begründung scheint, stellt sich die bash Tab-Vervollständigung heraus immer empfindlich außer ist case für Dateinamen (einschließlich Verzeichnisse und bash Befehle, die auf Dateinamen abbilden), die so konfiguriert werden kann, Fall- zu sein unempfindlich. Auch Dinge, bei denen typischerweise die Groß- und Kleinschreibung nicht beachtet wird, wie Signalnamen und Hostnamen, können nur unter Berücksichtigung der Groß- und Kleinschreibung ausgeführt werden.