我已经添加了几个别名到我的.zshrc
文件,并且它们只在我重新启动终端或使用source ~/.zshrc
时才起作用如果我只是打开终端,然后输入别名,它将不会识别它,直到我打电话source ~/.zshrc
ZSH总是需要重新启动终端才能访问别名
所以我知道这不是我创建的别名的问题,我只需要加载.zshrc
文件,每次我想要使用它们。
这是怎么回事?我怎样才能解决这个问题?
我已经添加了几个别名到我的.zshrc
文件,并且它们只在我重新启动终端或使用source ~/.zshrc
时才起作用如果我只是打开终端,然后输入别名,它将不会识别它,直到我打电话source ~/.zshrc
ZSH总是需要重新启动终端才能访问别名
所以我知道这不是我创建的别名的问题,我只需要加载.zshrc
文件,每次我想要使用它们。
这是怎么回事?我怎样才能解决这个问题?
那么,你不希望你只需要编辑一个文件,然后通过魔术,所有你当前的zsh实例以某种方式摄取变化,是吗?
从zsh的手册页,部分启动/关机FILES:
如果shell是交互式的,命令从/ etc/zshrc读取,然后$ ZDOTDIR/.zshrc
( $ ZDOTDIR默认为您的$ HOME)。因此,如果你在你的终端,你有三种选择。其中两个你已经找到(重新启动终端,手动源.zshrc)。第三个选择是打开一个zsh子shell(通过输入zsh
)。
其实,有是一招,做一些“神奇”自动读取文件:岩组允许你定义一个所谓的PRECMD勾,它允许你建立一个任意的命令是刚刚执行在显示命令提示符之前。你可以用它来找到你喜欢的任何文件。如果您想使用此功能,我强烈建议针对采购所有.zshrc。迟早你会在.zshrc中拥有你不想每次都执行的东西。
相反,把你的别名定义成一个单独的文件,说$ HOME/.aliases,并在岩组定义了钩
function precmd {
source $HOME/.aliases
}
如果以后改变.aliases文件,你仍然要键入一个在您的shell中的回车,以便激发一个新的提示被写入并执行precmd,但这比手动获取文件麻烦。