Ist es möglich, die Datei in die Konfigurationsdatei von zsh aufzunehmen? Wie?

22

Ich hätte gerne eine Datei zB. f mit nur zsh Aliasen (Reinheitsgründe). Dann möchte ich die f- Datei in meine .zshrc- Datei aufnehmen, damit die in f definierten Aliase in .zshrc sichtbar sind .

Ist es möglich?

Wenn ja, könnte ich zB ein Skript erstellen. my_alias( $my_alias ll 'ls -l'), das einen Alias ​​an die f- Datei anfügt . Natürlich könnte ich tun

$echo {alias command} >> ~/.zshrc

Aber das macht .zshrc zu einem großen Durcheinander.

Außerdem, wie sieht es in Bash aus?

AKTUALISIEREN

Wenn jemand meine Idee teilt, ist dies dank phunehehe die Lösung:

# source aliases
ALIASFILE=~/.aliasesrc
source $ALIASFILE
function add_alias() {
    if [[ -z $1 || -z $2 || $# -gt 2 ]]; then
        echo usage:
        echo "\t\$$0 ll 'ls -l'"
    else
        echo "alias $1='$2'" >> $ALIASFILE
        echo "alias ADDED to $ALIASFILE"
    fi
}
xliiv
quelle

Antworten:

20

.zshrcund .bashrcsind Skriptdateien, keine Konfigurationsdateien, so dass Sie die Aliasdatei "quellen". In Zsh ( .zshrc) und Bash ( .bashrc) gleichermaßen:

. my_alias

Läuft my_aliasund hinterlässt seine Effekte in derselben Umgebung wie die RC-Dateien, sodass Sie die Aliase in der Shell erhalten. Natürlich sind Sie auch nicht auf Aliase beschränkt. Ich benutze eine .shrc, die von beiden .bashrcund .zshrcfür gemeinsame Exporte, Funktionen und Aliase bezogen wird.

Weitere Informationen zum Sourcing finden Sie unter Verschiedene Methoden zum Ausführen eines Shell-Skripts .

phunehehe
quelle
31

So mache ich das in meinem .zshrc:

if [ -f ~/.zsh/zshalias ]; then
    source ~/.zsh/zshalias
else
    print "404: ~/.zsh/zshalias not found."
fi
klopfen
quelle
Vielen Dank für die gute Antwort. Du und Phunehehe sind korrekt, aber es ist nur möglich, eine Antwort zu genehmigen. Deshalb habe ich beschlossen, sie Phunehehe zu geben, da er der erste war :)
Xliiv
14

So geben Sie eine Datei als Quelle aus, wenn diese in einer Zeile vorhanden ist:

[ -f .aliases ] && source .aliases
Matthieu Napoli
quelle
Wie unterscheidet sich das von Pat's Antwort ?
Jasonwryan
1
Das Gleiche, aber Einzeiler. Ich kam von Google und der eine Liner war das, wonach ich suchte (fand ihn gleichzeitig in einem Forum), also dachte ich, ich könnte das genauso gut teilen;) Ich hätte es mir nicht so ausgedacht wie ich bin in bash dumm
Matthieu Napoli
1

Nach der Installation von oh-my-zsh lauten die letzten Zeilen von.zshrc :

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.  
# For a full list of active aliases, run `alias`.
# 
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

Sie haben also einige Alternativen:

  • Direkt zu hinzufügen .zshrc
  • Erstellen Sie einen Ordner und fügen Sie auf seinem Weg am Ende .zshrc: ZSH_CUSTOM=$HOME/Dropbox/.myzshconfig.
  • Verwenden Sie den ~/.oh-my-zsh/customOrdner und git clone git://github.com/yourusername/zsh_config.git .dort.
  • Mit source/ Punkt Operator:

    # CUSTOMIZATION FOR ZSH
    if [ -r ~/Dropbox/.myzshrc ]; then
        source ~/Dropbox/.myzshrc
    fi

    -r FILEÜberprüfen Sie, ob vorhanden und Leseberechtigung erteilt ist.

    In diesem Fall können Sie überprüfen $SHELL, ob Bash und Zsh dieselbe Datei enthalten.

Referenz

Pablo A
quelle
Vielen Dank für die nette Idee von Dropboxing
Ariful Haque