Bash

zsh 中的別名和 bash 中的別名之間的區別

  • August 13, 2018

我四處搜尋,但找不到任何結論性的東西。zsh 中的 alias 命令和 bash 中的 alias 命令有區別嗎?如果不是,這是否意味著我可以在兩個 shell 之間共享一組別名並期望它們按我的預期工作?

根據Zsh Workshop Aliases,它們似乎具有相同的語法,因此它們應該可以工作。

alias命令的語法在所有 Bourne 風格的 shell 中都是相同的。因此,只要它們在所有 shell 中都有意義,您就可以在~/.zshrc~/.bashrc~/.kshrc、之間共享它們。~/.shrc

變數定義和函式定義也是如此,只要您使用所有 shell 都支持的語法子集。

如果您不使用早於 4.0 的 zsh 版本,則可以將所有與 shell 無關的定義放在一個名為 (say) 的文件中~/.common.rc.sh,其中第一行是

emulate -LR sh 2>/dev/null

這告訴 zsh 只在這個文件中期望 sh 兼容的語法。~/.bashrc然後在,~/.bashrc等開頭附近獲取該文件~/.kshrc

這基本上就是我所做的。例如,我有一些複雜的程式碼,它會ls根據可用的選項(--color-G-F等)為我最喜歡的選項生成別名;它與外殼無關,因此進入.common.rc.sh. 我也有依賴於 shell 的別名,alias zcp='zmv -C'就像.zshrc.

引用自:https://unix.stackexchange.com/questions/25243