J'ai cherché autour mais je n'ai rien trouvé de concluant. Existe-t-il une différence entre la commande alias dans zsh et la commande alias dans bash? Sinon, cela signifie-t-il que je peux partager un ensemble d'alias entre les deux shells et m'attendre à ce qu'ils fonctionnent comme prévu?
9
La syntaxe de la
alias
commande est la même dans tous les shells de style Bourne. Ainsi , vous pouvez les partager à travers~/.zshrc
,~/.bashrc
,~/.kshrc
,~/.shrc
, aussi longtemps qu'ils ont un sens dans toutes les coquilles.Il en va de même pour les définitions de variables et les définitions de fonctions, tant que vous utilisez le sous-ensemble de syntaxe pris en charge dans tous les shells.
Si vous n'utilisez pas de versions de zsh antérieures à 4.0, vous pouvez placer toutes vos définitions shell-agnostiques dans un fichier appelé (disons)
~/.common.rc.sh
, où la première ligne estCela indique à zsh de ne s'attendre à une syntaxe compatible avec sh que dans ce fichier. Ensuite , la source de ce fichier vers le début
~/.bashrc
,~/.bashrc
,~/.kshrc
et ainsi de suite.C'est essentiellement ce que je fais. Par exemple, j'ai le code assez complexe qui génère un alias pour
ls
avec mes options préférées en fonction de ce qui est disponible (--color
,-G
,-F
, etc.); il est agnostique à la coquille, donc il entre.common.rc.sh
. J'ai également des alias dépendants du shell, commealias zcp='zmv -C'
ça entre.zshrc
.la source
/bin/sh
shebang en haut de mon fichier d'alias cela fonctionnera-t-il comme je l'ai prévu pour tous les shells?#!
ligne: ce n'est pas un script autonome, il ne peut provenir que d'un autre script.#!
ne change pas le comportement du shell de toute façon.alias
traite un argument commençant par+
comme introduisant une option comme le-
ferait, doncalias +=something
doit être écrit commealias -- +=something
dans zsh. Ne pensez pas que celaemulate
change cela.~/.shrc
car le Bourne Shell a l'implémentation d'alias la plus puissante maiszsh
utilise des noms d'options incompatibles.alias -g
crée un alias persistant$HOME/.globals
avec le Bourne Shell. Le partage des définitions d'alias n'est sûr que tant que vous n'utilisez pas plus que les fonctionnalités POSIX.zsh
'salias
autorise les alias globaux, tandis quebash
s n'est développé qu'au début de la ligne.Dans
zsh
:Vous pouvez alors faire:
Voir ici pour une liste d'alias globaux utiles.
la source