请注意,这不是重复项。我要问的是禁用缓存,而不是清除它。如果您有要清除的缓存,则显然不会禁用它。
在极少数情况下,我会注意到bash在路径中发现的东西缓存,这并不是因为它有用,而是因为它令人讨厌。一个例子:
~ dc$ export PATH=$HOME/bin:$PATH
~ dc$ cat bin/which
#!/bin/bash
echo "my which"
~ dc$ which
my which
~ dc$ rm bin/which
~ dc$ which which
-bash: /Users/dc/bin/which: No such file or directory
在另一个外壳...
~ dc$ which which
/usr/bin/which
我敢肯定,这种高速缓存在磁盘速度慢,内存昂贵且有限的美好旧时光中很有意义,因此您不能缓存太多-缓存路径比缓存查找命令所需的所有磁盘块便宜。但是这些天来,它并没有带来明显的好处,并且带来了许多无法解决的问题。这是一个错误的功能,很快就会成为错误。
而且我什至找不到禁用它的方法。有指针吗?
@drhyde,对不起。我将此问题标记为重复。使用
—
Evgeny Vereshchagin
set +h禁用哈希。
在Nixos中,它在bash中禁用了哈希。我认为,由于Nixos的工作方式,这是有充分理由的。但是,我不确定这是否真的对Nixos强制。我只是说,bash中的哈希在某些情况下会带来问题。
—
typelogic
/usr/bin完全保留在缓存中,即使在台式机的常见情况下,好处也很明显。