EMZETT.
Giriş yap

command not found (bash ve zsh)

Kısaca: Kabuk, girilen programı ne PATH klasörlerinde ne de yerleşik komut olarak bulur.

Biraz daha ayrıntılı: Mesaj: bash: foo: command not found veya zsh: command not found: foo. Kabuk programları PATH ortam değişkeninin klasörlerinde arar. Komut orada bulunmazsa bu hata görünür (çıkış kodu 127).

Ayrıntılı

Nedenler

  • Komutta yazım hatası (git yerine gti).
  • Program kurulu değil.
  • Kurulu, ama klasörü PATH’te değil (örneğin ~/.local/bin, /usr/local/bin, ~/.cargo/bin).
  • Geçerli klasördeki bir betik ./ olmadan çağrılıyor.
  • Kurulumdan sonra terminal yeniden başlatılmadı.
  • Betikte yanlış shebang satırı (#!/bin/bsh) veya Windows satır sonları (\r).

Çözümler

  1. Yazımı kontrol et ve Tab ile tamamla.
  2. Kur: sudo apt install paketadi (veya dağıtımının paket yöneticisi). Kabuk çoğu zaman zaten öneriler sunar (command-not-found paketi).
  3. Yolu kontrol et: echo $PATH, which komut, type komut.
  4. PATH’e ekle (~/.bashrc veya ~/.zshrc içinde): export PATH="$HOME/.local/bin:$PATH", sonra source ~/.bashrc.
  5. Kendi betiğin: ./script.sh olarak çağır, chmod +x script.sh ile çalıştırılabilir yap.
  6. \r satır sonları için: dos2unix script.sh.

Not

PATH’in başına asla . (geçerli klasör) koyma: bir saldırgan sana olağan bir komut adıyla bir dosya sokuşturabilir. Windows’ta benzer mesaj şöyledir: “The term … is not recognized as the name of a cmdlet …” veya “… is not recognized as an internal or external command …”.

Ayrıca bak: Çıkış kodu 126/127, Permission denied, bash