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
alias
comando 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
,~/.kshrc
y así sucesivamente.Esto es básicamente lo que hago. Por ejemplo, tengo algo complejo código que genera un alias para
ls
con 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/sh
shebang 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.alias
trata un argumento que comienza con la+
introducción de una opción como-
would, por lo quealias +=something
debe escribirse comoalias -- +=something
en zsh. No piensesemulate
que eso cambia.~/.shrc
ya que Bourne Shell tiene la implementación de alias más potente perozsh
usa nombres de opciones incompatibles.alias -g
crea un alias persistente$HOME/.globals
con Bourne Shell. Compartir definiciones de alias solo es seguro siempre que no utilice más que las funciones POSIX.zsh
'salias
permite alias globales, mientras quebash
s solo se expanden al comienzo de la línea.En
zsh
:Entonces puedes hacer:
Vea aquí una lista de alias globales útiles.
fuente