Was ist der Unterschied zwischen .bashrc und .inputrc?

13

Ich bin neu im Unix-System und finde es interessant, benutzerdefinierte Funktionen und Konfigurationen in den Einstellungsdateien wie .bashrcund zu erstellen .inputrc.

Allerdings verstehe ich die Unterschiede zwischen den beiden nicht. Wenn ich zum Beispiel einen Alias ​​erstellt habe, habe ich sie eingefügt .bashrc.

Example 1: alias ...='cd ../../'

Wenn ich Operationen wie mit der Pfeiltaste erstelle, um nach dem vorherigen oder nächsten Befehl zu suchen, gebe ich den Befehl ein .inputrc.

Example 2: "\e[A": history-search-backward

Warum muss ich sie in verschiedenen Einstellungsdateien ablegen? Wie unterscheide ich wann zu setzen , was , wo?

Danke im Voraus!

Counter10000
quelle

Antworten:

17

Die Einstellungen in der .inputrcDatei wirken sich nicht nur auf alle Programme aus, die die GNU-Readline-Bibliothek verwendenbash . .inputrcStellen Sie sich die Datei als Konfigurationsdatei für GNU Readline vor, ähnlich wie .bashrceine Konfigurationsdatei für bash.

GNU Readline wird beschrieben als:

... Eine Reihe von Funktionen für Anwendungen, mit denen Benutzer Befehlszeilen während der Eingabe bearbeiten können.

Um zu klären , ein bisschen weiter, Einstellungen , die in der sind .bashrcDatei nur beeinflussen bash. Wenn Sie möchten , optional laufen bashohne GNU Readline - Unterstützung oder Verwendung, können Sie aufrufen , bashmit der --noeditingOption wie folgt: bash --noediting. Sie können mehr über bashOptionen erfahren hier .

Zur Beantwortung Ihrer letzten Frage von

Wie unterscheide ich, wann was wo abzulegen ist?

Wenn Sie eine Option wünschen, die alle Programme auf Ihrem System betrifft, die die GNU Readline-Bibliothek verwenden, ist .inputrcdies die erste Wahl. Wenn Sie Ihre bashSitzung lediglich konfigurieren .bashrcmöchten, ist dies die beste Wahl.

aliceinpalth
quelle
Vielen Dank, dass Sie @aliceinpalth. Meinen Sie damit, dass bash zur GNU Readline-Bibliothek gehört? Was ist sonst noch in der GNU Readline-Bibliothek?
Counter10000
5
@ Counter10000 In diesem Sinne ist die Bibliothek keine "Sammlung von Werkzeugen" (ich verstehe, warum Sie das vielleicht denken), sondern eine "Sammlung von Funktionen, die von verschiedenen Werkzeugen verwendet werden können". In diesem Fall sind es Funktionen zum Arbeiten mit einer Befehlszeile (einschließlich Bildlauf, Zeilenbearbeitung usw.). Bash verwendet dies für die Shell-Eingabeaufforderung. Auf meinem System direkt vor mir wird es auch für bc(Befehlszeilenrechner), xfsprogs(Dateisystemadministrationsprogramme), sqlite(ein sehr kleines Datenbanksystem), lftp(ein Befehlszeilen-FTP-Client) und mehr verwendet.
Mattdm
1
Kein Problem @ Counter10000! Ich bin froh, dass ich helfen kann. @mattdm hat Ihre Frage sehr gut beantwortet. Um mehr zu erfahren , wie diese Programme nutzen GNU Readline, gibt es eine gute write-up zur Verfügung hier .
aliceinpalth
1
Es scheint, dass der letzte Absatz in Ihrer Antwort zumindest ungenau ist. Ich nehme an, es gibt einige Optionen, die nur in der inputrc-Datei festgelegt werden können, so dass die beiden Dateien nicht vollständig "austauschbar" sind. Ich habe versucht , die Optionen von diesem zu setzen Antwort in .bashrcund nichts geschah. Sie haben nur Auswirkungen auf die Einstellung in.inputrc
user907860