.bashrc Aliase aus verschiedenen Dateien laden

11

Ich habe eine .bashrc-Datei, die ich einrichten möchte, damit Aliase aus einer .aliases-Datei gelesen und eingerichtet werden.

Derzeit habe ich:

# User specific aliases and functions
while read alias_line
do
        echo `alias ${alias_line}`
done < .aliases

Aber beim Login bekomme ich:

-bash: alias: -fu: nicht gefunden -bash: alias: $ USER ": nicht gefunden

-bash: alias: -lart ": nicht gefunden

Die .aliases-Datei sieht folgendermaßen aus:

psu = "ps -fu $ USER" ll = "ls -lart"
pico = 'nano'

Vladimir
quelle

Antworten:

13

Wenn Sie verwenden alias ${alias_line}, wird die Variable in Leerzeichen aufgeteilt, wobei Anführungszeichen ignoriert werden.

Es gibt zwei Möglichkeiten, wie Sie das Problem beheben können:

  • Entfernen Sie alle Zitate aus der Alias-Datei:

    ll=ls -lart
    psu=ps -fu $USER

    und setzen Sie die Variable selbst in Anführungszeichen:

    alias "$alias_line"

    Dies funktioniert, weil in Bash, ll="ls -lart"und "ll=ls -lart"sind genau gleichwertig.

  • Alternativ (dies ist eine bessere und häufigere Methode) können Sie eine Datei mit aliasBefehlen .erstellen und diese mithilfe des integrierten (auch bekannt als source) importieren.

    alias pico='nano'
    alias psu='ps x'
    alias ll='ls -lart'

    dann in deinem ~/.bashrc:

    . ~/.aliases

Die zweite Methode ist besser , da sie Sie nicht auf Aliase beschränkt, sondern auch das Definieren von Funktionen ermöglicht , die viel leistungsfähiger sind.

user1686
quelle
Das stimmt. Es war ein völlig falscher Ansatz. Ich habe es selbst mit den folgenden Befehlen gemacht: beim Lesen der Zeile; Echo "alias $ line" >> .aliases_full; done <.aliases Ich habe dann gerade mv .aliases_full .aliases gemacht. ./.aliases #in .bashrc Trotzdem danke :)
Vladimir