Shell
在 zsh 和 bash 之間共享別名和 PATH 設置
我通常使用的外殼是
zsh
. 我有幾個別名可以在某些程序中啟用顏色,例如ls
和grep
。我還設置了自定義路徑,以便可以在非標準位置(例如 in~/bin/
)執行程序。我不會將 root 的 shell 更改為
zsh
,但我想分享這些設置,以便 root 也可以擁有它。我發現那zsh
不是採購/etc/profile
。我可以在 中獲取它/etc/zsh/zprofile
,但我想要一些其他更“正確”的方式。
我會創建一個文件
/etc/commonprofile
並在/etc/profile
和/etc/zsh/zprofile
. 這使您有機會共享通用設置,並且仍然分別使用各自bash
的zsh
特定設置和語法。/etc/profile``zprofile
Zsh 有一個 sh 兼容模式,可以讓它執行 POSIX sh 程式碼和一些 bash 擴展。只要您不使用 zsh 所沒有的 bash 功能(使用相同的語法),您就可以擁有由兩個 shell 提供的相同文件。使用
emulate
內置將zsh置於兼容模式;使用該-L
選項,仿真對於封閉函式(不是封閉源腳本)是本地的。source_sh () { emulate -LR sh . "$@" }
對於環境變數之類的東西,您可以使用
source_sh /etc/profile
in/etc/zprofile
和source_sh ~/.profile
in~/.zprofile
,因為配置文件不太可能使用特定於 bash 的功能。對於別名和函式定義之類的東西,由於 shell rc 文件可能包含很多無法共享的東西(提示、鍵綁定、完成設置……),請使用類似的文件
~/.sh_aliases
來源~/.bashrc
和source_sh
‘d在~/.zshrc
.