He buscado alrededor pero no he podido encontrar nada concluyente. ¿Hay alguna diferencia entre el comando alias en zsh y el comando alias en bash? Si no es así, ¿significa que puedo compartir un conjunto de alias entre las dos capas y esperar que funcionen como yo pretendía?
9

La sintaxis del
aliascomando es la misma en todos los shells de estilo Bourne. Así se pueden compartir a través de~/.zshrc,~/.bashrc,~/.kshrc,~/.shrc, siempre y cuando tengan sentido en todas las conchas.Lo mismo se aplica a las definiciones de variables y definiciones de funciones, siempre que use el subconjunto de sintaxis compatible con todos los shells.
Si no usa versiones de zsh anteriores a 4.0, puede poner todas sus definiciones agnósticas de shell en un archivo llamado (digamos)
~/.common.rc.sh, donde está la primera líneaEsto le dice a zsh que espere una sintaxis compatible con sh solo en este archivo. A continuación, ese archivo fuente cerca del comienzo de
~/.bashrc,~/.bashrc,~/.kshrcy así sucesivamente.Esto es básicamente lo que hago. Por ejemplo, tengo algo complejo código que genera un alias para
lscon mis opciones favoritas en función de lo que está disponible (--color,-G,-F, etc.); es agnóstico a la concha, así que entra.common.rc.sh. También tengo alias dependientes de shell, comoalias zcp='zmv -C'eso entra.zshrc.fuente
/bin/shshebang en la parte superior de mi archivo de alias, ¿funcionará como pretendo para todos los shells?#!línea: este no es un script independiente, solo se puede encontrar en otro script.#!no cambia el comportamiento del shell de todos modos.aliastrata un argumento que comienza con la+introducción de una opción como-would, por lo quealias +=somethingdebe escribirse comoalias -- +=somethingen zsh. No piensesemulateque eso cambia.~/.shrcya que Bourne Shell tiene la implementación de alias más potente perozshusa nombres de opciones incompatibles.alias -gcrea un alias persistente$HOME/.globalscon Bourne Shell. Compartir definiciones de alias solo es seguro siempre que no utilice más que las funciones POSIX.zsh'saliaspermite alias globales, mientras quebashs solo se expanden al comienzo de la línea.En
zsh:Entonces puedes hacer:
Vea aquí una lista de alias globales útiles.
fuente