web-dev-qa-db-ja.com

zshのエイリアスとbashのエイリアスの違い

私は周りを検索しましたが、決定的なものは何も見つかりませんでした。 zshのaliasコマンドとbashのaliasコマンドに違いはありますか?そうでない場合は、2つのシェル間でエイリアスのセットを共有し、意図したとおりに機能することを期待できるということですか?

9
Zameer Manji

Zsh Workshop Aliases によると、構文は同じように見えるので、機能するはずです。

7
Rainer Bendig

aliasコマンドの構文は、すべてのボーンスタイルのシェルで同じです。したがって、すべてのシェルで意味がある限り、~/.zshrc~/.bashrc~/.kshrc~/.shrc間で共有できます。

すべてのシェルでサポートされている構文のサブセットを使用する限り、変数定義と関数定義についても同じことが言えます。

4.0より前のバージョンのzshを使用しない場合は、シェルに依存しないすべての定義を(たとえば)~/.common.rc.shというファイルに入れることができます。最初の行は

emulate -LR sh 2>/dev/null

これは、このファイルでのみsh互換の構文を期待するようにzshに指示します。次に、そのファイルを~/.bashrc~/.bashrc~/.kshrcなどの先頭近くで調達します。

これは基本的に私がしていることです。たとえば、利用可能なもの(--color-G-Fなど)に応じてお気に入りのオプションを使用してlsのエイリアスを生成するやや複雑なコードがあります。シェルに依存しないため、.common.rc.shに入ります。 alias zcp='zmv -C'に入る.zshrcのようなシェル依存のエイリアスもあります。

zshaliasはグローバルエイリアスを許可しますが、bashsは行の先頭でのみ展開されます。

zsh

alias -g L="| less -FRX"

その後、次のことができます。

verbose-command L

役立つグローバルエイリアスのリストについては、 ここ を参照してください。

2
Tom Hale