Bash al (Alias ​​local)-Funktion nicht gefunden

Bash al (Alias ​​local)-Funktion nicht gefunden

Kann ich Bash-Aliase lokal im Verzeichnis haben?

Bei einer solchen Verzeichnisstruktur:

dir1/
  - .
  - ..
  - dir2/
  - file

Wenn ich cd dir1Alias eg​​nicht funktioniert, aber wenn ich cd dir1/dir2/solche Alias ​​funktioniert. Definition von alsias sollte auch lokal sein, wohnen indir1/dir2/

Anwendungsfall: Ich bin Programmierer mit vielen verschiedenen Begleitwerkzeugen für meine Projekte. Ich würde gerne Aliase für einige davon erstellen, aber die meisten davon wärenProjekt/VerzeichnisSpezifisch.

Ich habe einen Bash-Befehl gesehen al, der dies bewerkstelligen könnte, aber er ist in meinem Ubuntu (14.04) nicht vorhanden.

Antwort1

Ja. Der einfachste Ansatz wäre, eine Datei zu haben, in der Ihre Aliase in jedem Verzeichnis definiert sind. Also zum Beispiel:

$ cat dir1/.alias
alias eg='echo "this is dir1"'
$ cat dir2/.alias
alias eg='echo "this is dir2"'

Im obigen Beispiel enthält jedes Verzeichnis eine Datei mit dem Namen, .aliasin der der egAlias ​​definiert ist. Nun, cdin eine davon,Quelledie Datei, und der Alias ​​wird verfügbar:

$ cd dir1 && source .alias
$ eg
This is dir1
$ cd ../dir2 && source .alias
$ eg
This is dir2

Wenn Sie möchten, dass dies automatisch erfolgt, fügen Sie diese Zeile hinzu ~/.bashrc:

## Check if an '.alias' file exists and, if it does, source it. 
PROMPT_COMMAND='[ -e .alias ] && source .alias'

Die Variable definiert einen Befehl, der vor jeder Eingabeaufforderung ausgeführt wird, also nach jedem ausgeführten Befehl. Das bedeutet, dass diese Datei als Quelle verwendet wird, PROMPT_COMMANDsobald Sie in ein Verzeichnis wechseln, das eine Datei enthält ..alias

Anmerkungen

  • Dies ist unsicher. Jeder Code in der .aliasDatei wird ausgeführt. Die Verwendung erfolgt auf eigenes Risiko. Der manuelle Ansatz ist viel sicherer.

  • Alle in der Datei definierten Aliase .aliassind nach Verlassen des Verzeichnisses weiterhin verfügbar, bis sie durch eine andere Aliasdefinition mit demselben Namen überschrieben werden. Wenn das ein Problem darstellt, können Sie alle Aliase löschen und dann Ihre globalen Aliase mit folgendem Befehl neu laden:

    unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases
    

    Um es zu vereinfachen, machen Sie eine Funktion daraus, indem Sie Ihrem folgende Zeilen hinzufügen ~/.bashrc:

    clear_aliases(){ 
        unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases; 
    }
    

    Anschließend können Sie clear_aliasesdie Standardeinstellungen wiederherstellen.

verwandte Informationen