是否可以再次获取 .bashrc 和 .zshrc 并删除其中的函数而无需重新启动?

是否可以再次获取 .bashrc 和 .zshrc 并删除其中的函数而无需重新启动?

我里面有一个函数.zshrc我把它删除了。

.zshrc现在,当我尝试获取它时,它确实获取了它,但并没有从内存中删除曾经存在的函数。

有没有办法在不重新启动我的机器的情况下删除该函数(现在我相信内存、zsh 命名空间或类似的东西)?

答案1

unhash -f functionname在 zsh 中,您可以使用或删除函数unfunction functionname

不过,这不会自动清除您从给定启动文件中删除的函数,因为 shell 不会记住它最初从哪里获取的,并且不会为重新获取同一文件赋予任何特殊含义。所以你必须知道你想忘记什么。

既然您.bashrc在主题中提到:bash 等效项是unset -f functioname

答案2

unhash -mf "*"可用于清除所有功能。
由于它会消除标准的 zsh 优秀功能,因此您需要重新加载/etc/zsh/zshrc

我的 .zshrc 开头有以下内容:

# Clear all functions and aliases
unhash -mf "*"
unhash -ma "*"
. /etc/zsh/zshrc  # reload standard functions and aliases

相关内容