Pamiętaj, że to nie jest duplikat. Pytam o wyłączenie pamięci podręcznej, a nie jej wyczyszczenie. Jeśli masz pamięć podręczną do wyczyszczenia, to oczywiście nie jest wyłączona.
W rzadkich przypadkach, gdy zauważam pamięć podręczną bash o rzeczach znalezionych na ścieżce, to nie dlatego, że jest pomocna, ale dlatego, że jest cholernie denerwująca. Przykład:
~ 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
W innej powłoce ...
~ dc$ which which
/usr/bin/which
Jestem pewien, że to buforowanie miało sens w dawnych dobrych czasach, gdy dyski były powolne, a pamięć była droga i ograniczona, więc nie można było dużo buforować - buforowanie ścieżki jest tańsze niż buforowanie wszystkich bloków dysku niezbędnych do znalezienia polecenia . Ale obecnie nie zapewnia zauważalnych korzyści i powoduje więcej problemów niż rozwiązuje. To mylna cecha, granicząca z błędem.
I nie mogę nawet znaleźć sposobu, aby to wyłączyć. Jakieś wskazówki?
/usr/bin
pozostaje całkowicie w pamięci podręcznej.set +h
aby wyłączyć haszowanie.Odpowiedzi:
Możesz po prostu wyczyścić zaszyfrowane pliki wykonywalne przed wyświetleniem monitu:
Od
help hash
:źródło
set +h
set +h
nie jest idealny, ponieważ wiele narzędzi (np. Instalacje klejnotów rubinowych) wywołujehash
, generując strumienie-bash: hash: hashing disabled
ostrzeżeń.Możesz wymusić na bash, aby wykonał nowe wyszukiwanie ścieżki na wypadek, gdyby polecenie w tabeli skrótów już nie istniało.
Z strony podręcznika bash:
Przykład:
źródło