Eu procurei, mas não encontrei nada conclusivo. Existe uma diferença entre o comando alias no zsh e o comando alias no bash? Caso contrário, isso significa que eu posso compartilhar um conjunto de aliases entre as duas conchas e esperar que funcionem como pretendia?
9
A sintaxe do
alias
comando é a mesma em todos os shells no estilo Bourne. Assim, você pode compartilhá-los através~/.zshrc
,~/.bashrc
,~/.kshrc
,~/.shrc
, contanto que eles fazem sentido em todas as conchas.O mesmo vale para definições de variáveis e definições de funções, desde que você use o subconjunto de sintaxe suportado em todos os shells.
Se você não usar versões do zsh anteriores à 4.0, poderá colocar todas as suas definições independentes de shell em um arquivo chamado (digamos)
~/.common.rc.sh
, em que a primeira linha éIsso diz ao zsh que espera apenas uma sintaxe compatível com sh neste arquivo. Então fonte desse arquivo perto do início
~/.bashrc
,~/.bashrc
,~/.kshrc
e assim por diante.Isso é basicamente o que eu faço. Por exemplo, eu tenho o código um pouco complexa que gera um alias para
ls
com as minhas opções favoritas, dependendo do que está disponível (--color
,-G
,-F
, etc.); é agnóstico à casca, então entra.common.rc.sh
. Eu também tenho aliases dependentes de shell, assimalias zcp='zmv -C'
entra.zshrc
.fonte
/bin/sh
shebang na parte superior do meu arquivo de aliases, ele funcionará como pretendo para todos os shells?#!
linha: este não é um script independente, só pode ser originado em outro script.#!
não altera o comportamento do shell de qualquer maneira.alias
trata um argumento começando com a+
introdução de uma opção como-
faria, entãoalias +=something
deve ser escrito comoalias -- +=something
no zsh. Não penseemulate
que isso muda.~/.shrc
pois o Bourne Shell possui a implementação de alias mais poderosa, maszsh
usa nomes de opções incompatíveis.alias -g
cria um alias persistente$HOME/.globals
com o Bourne Shell. Compartilhar definições de alias só é seguro, desde que você não use mais do que os recursos do POSIX.zsh
'salias
permite aliases globais, enquantobash
s só são expandidos no início da linha.Em
zsh
:Você pode então fazer:
Veja aqui uma lista de aliases globais úteis.
fonte