GNU/Linux >> Znalost Linux >  >> Linux

Proč Bash nedává žádný takový soubor nebo adresář pro program, který je v mé PATH?

Docker-compose jste jednou nainstalovali na jedno místo. Poté jste jej smazali a nainstalovali na jiné místo.

Tímto způsobem jste narazili na optimalizaci bash, abyste nemuseli hledat $PATH pokaždé, když zadáte příkaz, uložením výsledků do mezipaměti. Hash cesty je hašovací tabulka spravovaná bashem, která obsahuje umístění na disku, kde shell by měl při spuštění příkazu hledat spustitelné programy. Hašovací tabulka se vymaže při událostech, které zjevně znehodnocují výsledky (jako je úprava $PATH), nebo pomocí vestavěného hash příkaz.

Když jste znovu provedli docker-compose, bash se jej pokusil získat z místa, kde jej našel naposledy, ale už tam nebyl, takže se vám zobrazila chybová zpráva.

Chcete-li zrušit platnost hash pro docker-compose, spusťte příkaz:

 hash docker-compose

Linux
  1. Proč substituce procesu Bash nefunguje s některými příkazy?

  2. Proč překladový soubor Bash neobsahuje všechny chybové texty?

  3. Proč ENOENT znamená Žádný takový soubor nebo adresář?

  1. Jak se vyhnout Žádný takový soubor nebo adresář Chyba pro cíl Makefile `make clean`

  2. příkaz find ve skriptu bash, který má za následek Žádná chyba souboru nebo adresáře pouze pro adresáře?

  3. Závažná chyba:cuda.h:Žádný takový soubor nebo adresář

  1. Proč `md5sum` nedává stejný hash jako internet?

  2. conda source deactivate :bash:deactivate:Žádný takový soubor nebo adresář

  3. Proč mi wget'ing image dává soubor, ne obrázek?