我里面有一个函数.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