大多数人似乎建议使用sourcefor reloading .zshrc。为什么?
首先我试了一下source ~/.zshrc。但它导致了compinit错误(在重新加载时,而不是首次.zshrc加载时的新 shell 实例)。
我的重新加载别名现在是:
alias zsh-reload="exec zsh"
Run Code Online (Sandbox Code Playgroud)
代替:
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
造成这种情况的原因是我之前的reload方法(source)触发了compinit错误;
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Run Code Online (Sandbox Code Playgroud)
所以我现在正在做,exec因为我相信它可以确保以前的环境不会污染新的环境。
exec方法的缺点是什么?exec还是source?exec在理论上导致相比意想不到的问题source的方法?如果我在终端输入以下内容,我可以完成我想要的一切:
git commit -am "my commit message" ; git pull ; git push ; ssh user@server 'cd /path/to/git/repo/ ; git pull ; exit'
Run Code Online (Sandbox Code Playgroud)
我想创建与我的别名相同的~/.zshrc.就像是:
alias pushit () { git commit -am "$@" ; git pull ; git push ; ssh user@server 'cd /path/to/git/repo/ ; git pull ; exit' }
Run Code Online (Sandbox Code Playgroud)
像这样在终端中运行:
pushit "my commit message"
Run Code Online (Sandbox Code Playgroud)
相反,每当我重新加载〜/ .zshrc(source ~/.zshrc)或打开一个新的终端窗口时,我都会看到它循环遍历我的别名数十次.目前尚不清楚它实际上是在运行.
我究竟做错了什么?
笔记:
~/.zshrc).