#unixtips

### 困惑:

> $ which claude /c/Users/David.Wei/.local/bin/claude
~/.local/bin
$ claude --version
bash: /c/Users/David.Wei/scoop/apps/nodejs/current/bin/claude: No such file or directory

### 解惑

现象:

which claude
/c/Users/David.Wei/.local/bin/claude


但执行 claude 时 bash 实际调用的是:

/c/Users/David.Wei/scoop/apps/nodejs/current/bin/claude


这在 bash 里通常只有一个原因:hash cache。

bash 会缓存命令路径。
之前某次执行时 claude 在:

/c/Users/David.Wei/scoop/apps/nodejs/current/bin/claude


后来这个文件被删掉了(node/npm 升级),但 bash 仍然缓存旧路径。

因此:

which


显示的是 当前 PATH 解析结果

但 bash 执行的仍然是 缓存路径

清缓存:

hash -r


或只清这个命令:

hash -d claude


再执行:

claude --version


就会走:

~/.local/bin/claude


验证缓存:

hash


可以看到 bash 当前缓存的命令路径。

验证实际执行路径:

type -a claude
 
 
Back to Top