Ich habe mich umgesehen, konnte aber nichts aussagekräftiges finden. Gibt es einen Unterschied zwischen dem Alias-Befehl in zsh und dem Alias-Befehl in bash? Wenn nicht, kann ich dann eine Reihe von Aliasnamen zwischen den beiden Shells teilen und erwarten, dass sie wie beabsichtigt funktionieren?
9
Die Syntax des
alias
Befehls ist in allen Bourne-Shells gleich. So können Sie sie über gemeinsam nutzen können~/.zshrc
,~/.bashrc
,~/.kshrc
,~/.shrc
, solange sie Sinn in allen den Schalen zu machen.Gleiches gilt für Variablendefinitionen und Funktionsdefinitionen, sofern Sie die Teilmenge der Syntax verwenden, die in allen Shells unterstützt wird.
Wenn Sie keine Versionen von zsh verwenden, die älter als 4.0 sind, können Sie alle Ihre Shell-agnostischen Definitionen in einer Datei namens (sagen wir) ablegen
~/.common.rc.sh
, in der sich die erste Zeile befindetDies weist zsh an, nur in dieser Datei eine sh-kompatible Syntax zu erwarten. Dann Quelle der Datei am Anfang der
~/.bashrc
,~/.bashrc
,~/.kshrc
und so weiter.Das ist im Grunde das, was ich tue. Zum Beispiel, ich habe etwas komplexen Code, der einen Alias für generiert
ls
mit meinen Lieblings - Optionen , je nachdem , was verfügbar ist (--color
,-G
,-F
, etc.); Es ist muschelunabhängig, also geht es rein.common.rc.sh
. Ich habe auch Shell-abhängige Aliase, soalias zcp='zmv -C'
geht das rein.zshrc
.quelle
/bin/sh
Shebang oben in meine Aliase-Datei setze , funktioniert er dann so, wie ich es für alle Shells beabsichtige?#!
Zeile: Dies ist kein eigenständiges Skript, es kann nur in einem anderen Skript bezogen werden.#!
ändert das Verhalten der Shell sowieso nicht.alias
ein Argument, das mit+
der Einführung einer Option beginnt, wie-
würde, alsoalias +=something
wiealias -- +=something
in zsh geschrieben werden muss . Denken Sie nicht, dass sich dasemulate
ändert.~/.shrc
da die Bourne Shell über die leistungsstärkste Alias-Implementierung verfügt, jedochzsh
inkompatible Optionsnamen verwendet.alias -g
Erstellt einen dauerhaften Alias in$HOME/.globals
der Bourne Shell. Das Teilen von Aliasdefinitionen ist nur sicher, solange Sie nicht mehr als die POSIX-Funktionen verwenden.zsh
'salias
erlaubt globale Aliase, währendbash
s nur am Zeilenanfang erweitert werden.In
zsh
:Sie können dann tun:
Siehe hier für eine Liste von hilfreichen globalen Aliase.
quelle