Aliase: Unterschied zwischen .bash_rc, .bash_aliases und / usr / local / bin

9

Beim Herumspielen mit Terminal habe ich festgestellt, dass es viele Möglichkeiten gibt, permanente Aliase zu erstellen .

Ich bin ein Linux-Neuling und mache, soweit ich weiß, Folgendes:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. Hinzufügen desired_alias = '/path/to/executable'zu~/.bashrc
  3. Kommentieren Sie diese Zeilen in ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi

    und desired_alias = '/path/to/executable'in die setzen~/.bash_aliases

Alle haben den gleichen Effekt.

Was ist der Unterschied zwischen der ersten und der zweiten Methode?

Strae
quelle

Antworten:

10

Mit der ersten Methode erstellen Sie keinen Alias, sondern einen Symlink. Symlinks stehen für symbolische Links:

Symbolische Links sind Dateien, die als Zeiger auf andere Dateien dienen. [...] Ein symbolischer Link ist ein spezieller Dateityp, dessen Inhalt eine Zeichenfolge ist, die der Pfadname einer anderen Datei ist, auf die sich der Link bezieht. Mit anderen Worten, eine symbolische Verknüpfung ist ein Zeiger auf einen anderen Namen und nicht auf ein zugrunde liegendes Objekt.

Lesen Sie hier und hier mehr über Symlinks .

Nur mit der zweiten Methode erstellen Sie tatsächlich einen Alias.

Aliase ermöglichen das Ersetzen eines Wortes durch eine Zeichenfolge, wenn es als erstes Wort eines einfachen Befehls verwendet wird. Die Shell verwaltet eine Liste von Aliasen, die mit den integrierten Alias- und Unalias-Befehlen festgelegt und deaktiviert werden können (siehe SHELL BUILTIN-BEFEHLE unten). Das erste Wort jedes einfachen Befehls wird, wenn es nicht in Anführungszeichen steht, überprüft, um festzustellen, ob es einen Alias ​​hat. In diesem Fall wird dieses Wort durch den Text des Alias ​​ersetzt.

Sie können einen Alias ​​überall dort definieren, wo Sie einen Befehl eingeben und von der Shell ( in diesem Fall bash ) interpretieren lassen können. Damit der Alias ​​jedoch in anderen Shells verfügbar ist, muss er in einer Datei definiert werden, die von der Shell interpretiert wird beim Start (Shell-Start, kein Computer-Start).

Für Bash sind dies /etc/bash.bashrc(systemweit) und ~/.bashrc. Diese Dateien werden interpretiert, wenn die Shell im interaktiven Modus gestartet wird (wie bei der Verwendung Terminal). Ich werde die Profildateien nicht erwähnen, da sie einem anderen Zweck dienen.

Sie möchten also Ihre Aliase hinzufügen ~/.bashrc, damit sie in jeder interaktiven Shell verfügbar sind.

Die .bash_aliasesMethode erreicht genau das Gleiche wie das Einfügen der Aliase ~/.bashrc, hat jedoch den zusätzlichen Vorteil, dass sie leichter von Programmen analysiert und bearbeitet werden kann.

Die . ~/.bash_aliasesMittelwertquelle (Laden) _~/.bash_aliases_im Kontext der aktuell ausgeführten Shell.

Li Lo
quelle
@lilo du hast mich zum Tutorial geschlagen! +1
myusuf3
@gc Ich treffe den Sack, also mach dich wild :)
Li Lo
@ Lilo hahahha :)
myusuf3
1
Sie denken vielleicht, dass es genauso funktioniert, aber es ist nicht so. Bitte lesen Sie die Materialien zu Symlinks, auf die ich in meiner Antwort verwiesen habe. Symlink und Aliase dienen unterschiedlichen Zwecken und wurden für unterschiedliche Zwecke erstellt. Um Ihnen ein Beispiel zu geben, warum Symlinks nicht wie Aliase funktionieren, versuchen Sie Folgendes: Definieren Sie einen Alias ​​wie: alias px = "ps axu". Versuchen Sie nun, dasselbe mit Symlinks zu erreichen.
Li Lo
1
@Li Lo: Ich habe den Unterschied zwischen Synlink und / usr / local / bin verstanden, aber meine Frage (die mit der allgemeinen Frage vielleicht ein wenig vom Thema abweicht) lautet: Wofür wird exaclty / usr / local / bin verwendet?
Strae