终端下命令缓存问题
macOS 系统自带的 rsync 版本比较老,所以使用 brew 安装了一个新版本。
但是,明明查看 $PATH 的列表,/opt/homebrew/bin 是在 /usr/bin 的前面,但是终端下使用 rsync --version 查看,版本没有改变。
不过在新的终端下,版本确实是更新。
使用为什么在 PATH 环境变量中,/opt/homebrew/bin在/usr/bin前面,但是使用的还是/usr/bin 中的 rsync?需要在新的 terminal 窗口才会正确?问了 Claude,告知 shell 会把命令的路径缓存在一个哈希表中,并且贴心的告知了解决步骤:
验证问题
# 查看当前使用的 rsync 路径 |
解决方法
hash -d rsync |
它除了告诉我 bash 下怎么处理,还给出了 zsh 的命令。hash 是 shell 内建的命令,在 bash 和 zsh 中是不同的。zsh 中分成了三个命令:hash,rehash 和 unhash,而 bash 中只有一个命令,使用参数来控制。
最后,Claude 还告知我,要养成好的习惯:
预防措施
在安装新软件后,养成习惯:
# zsh |
在前 AI 时代,这个问题不得花个十几分钟找答案?于是我 Google 了一下上面的提示词,结果无论是 Google 列出的前几页网站还是 Google 网页上的 AI Overview,都没有给出正确的答案。 AI Overview 还是纠结在 .zshrc 中:
解决方法
检查当前 PATH: 在终端输入 echo $PATH,查看当前 PATH 变量的实际顺序。
确认配置文件:
Zsh (macOS 默认): 检查 ~/.zshrc。
Bash: 检查 ~/.bash_profile (登录时) 或 ~/.bashrc (交互式 shell)。
正确添加路径 (以 Zsh 为例):
打开 ~/.zshrc 文件。
确认有类似以下行(确保路径正确,且位置靠前):
不过使用 Gemini,倒是和 Claude 一样立刻判断除了问题所在。