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ı (
gityerinegti). - 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
- Yazımı kontrol et ve Tab ile tamamla.
- Kur:
sudo apt install paketadi(veya dağıtımının paket yöneticisi). Kabuk çoğu zaman zaten öneriler sunar (command-not-foundpaketi). - Yolu kontrol et:
echo $PATH,which komut,type komut. - PATH’e ekle (
~/.bashrcveya~/.zshrciçinde):export PATH="$HOME/.local/bin:$PATH", sonrasource ~/.bashrc. - Kendi betiğin:
./script.sholarak çağır,chmod +x script.shile çalıştırılabilir yap. \rsatı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