Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Mac

Khắc Phục Lỗi 'Command Not Found' Trong macOS Terminal: Sửa Nhanh Cho Zsh & Bash

Đôi khi bạn gặp lỗi "command not found" trên Mac khi cố thực thi lệnh trong cửa sổ Terminal.

Kể từ khi Apple đổi shell mặc định từ bash sang zsh trong macOS Catalina, người dùng chạy macOS Catalina trở lên thường thấy "zsh: command not found: brew". Nhưng người dùng macOS Mojave hoặc cũ hơn thấy lỗi như "bash: brew: command not found".

Khi Terminal báo "command not found", nghĩa là lệnh bạn nhập không nằm trong đường dẫn tìm kiếm (search path). Điều này xảy ra vì vài lý do chúng tôi sẽ giải thích.

Sửa lỗi "command not found" trên Mac:

  • 1. Tại sao lỗi 'command not found' bật lên trên Terminal Mac?
  • 2. Cách sửa lỗi Mac command not found?

Tại sao lỗi 'command not found' bật lên trên Terminal Mac?

Bạn nhận lỗi Mac command not found khi một trong những tình huống sau:

  • Lệnh nhập sai cú pháp.
  • Lệnh chưa cài đặt trên Mac.
  • Lệnh bị xóa nhầm hoặc thư mục hệ thống bị sửa/xóa.
  • Biến $PATH chỉ định thư mục cần tìm lệnh bị thiếu, sai, hoặc bị xóa.

Dù nguyên nhân gì, bạn có thể làm theo hướng dẫn chung dưới để sửa lỗi "command not found" trên Mac.

Cách sửa lỗi Mac command not found?

Có nhiều trường hợp lỗi "command not found" trên Mac. Bạn có thể gặp "zsh: command not found" trên Mac Monterey hoặc macOS dùng zsh. Vấn đề xảy ra với bất kỳ lệnh nào. Dưới là thông báo lỗi thường báo cáo:

  • zsh: command not found: $
  • zsh: command not found: ls
  • zsh: command not found: brew
  • zsh: command not found: import
  • bash: brew: command not found
  • -bash: $: command not found
  • sudo: command not found
  • sudo: nano: command not found

May mắn những lỗi này thường giải quyết được bằng các giải pháp dưới. Khuyên thử lần lượt cho đến khi lệnh chạy thành công.

  • Sửa 1: Kiểm tra cú pháp lệnh
  • Sửa 2: Đặt $PATH là đường dẫn macOS mặc định
  • Sửa 3: Thêm thư mục của bạn vào PATH
  • Sửa 4: Cài lại macOS hoặc khôi phục từ Time Machine

Kiểm tra cú pháp lệnh

Người không quen lệnh thường lỡ như quên khoảng trắng nơi cần hoặc thêm ký tự thừa. Ví dụ: nhập sudo nano/private/etc/hosts sửa Host files với Nano, cú pháp đúng có khoảng trắng sau nano: sudo nano /private/etc/hosts.

Hoặc copy-dán dòng $ brew install pyqt vào Terminal, chỉ trả lỗi: "-bash: $: command not found". Đó vì $ chỉ là nhắc Terminal mẫu trong tài liệu, không cần xuất hiện trong lệnh.

Vì vậy, điều đầu tiên kiểm tra khi gặp lỗi "command not found" trên Terminal Mac là cú pháp lệnh. Tốt nhất copy văn bản gốc vào Terminal thay vì gõ tay. So sánh lệnh của bạn với ví dụ khác dùng cùng lệnh cũng giúp.

Đặt $PATH là đường dẫn macOS mặc định

Path chỉ vị trí cụ thể trong hệ thống tệp. Tương tự, biến hệ thống PATH ($PATH) cho lệnh Terminal chỉ định vài thư mục chứa chương trình thực thi. Với $PATH, Mac biết đâu tìm lệnh, nên bạn chỉ nhập tên lệnh như ls thay vì đường dẫn tuyệt đối.

Tuy nhiên, nếu đường dẫn chứa lệnh bạn muốn chạy không được thiết lập, bạn nhận lỗi "command not found" trên Mac, như "zsh: command not found" hoặc "zsh: command not found ls".

Trong trường hợp này, trước tiên đảm bảo $PATH nơi lệnh nằm được cấu hình bằng bước sau:

  1. Mở Terminal.
  2. Thực thi lệnh đặt đường dẫn chuẩn macOS dùng trong dòng lệnh:
    export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    Khắc Phục Lỗi  Command Not Found  Trong macOS Terminal: Sửa Nhanh Cho Zsh & Bash
  3. Nhập mật khẩu, nhấn Enter.

Thử chạy lệnh thất bại trước xem lỗi "zsh: command not found" có tái diễn trên macOS Monterey không. Nếu vẫn lỗi, sang sửa tiếp theo.

Thêm thư mục của bạn vào PATH

Vấn đề khác gây "zsh: command not found" trên Mac M1 là khi lệnh bạn nhập không lưu trong $PATH mặc định. Kiểm tra $PATH mặc định hiện tại bằng lệnh Terminal: echo $PATH

Khắc Phục Lỗi  Command Not Found  Trong macOS Terminal: Sửa Nhanh Cho Zsh & Bash

Lệnh có thể cho $PATH mặc định là /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin, 5 thư mục Mac dùng với dòng lệnh.

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin

Nếu lệnh bạn dùng lưu trong thư mục loại trừ khỏi mặc định, làm theo bước dưới thêm vào $PATH. Ví dụ: gặp lỗi "zsh: command not found: brew" trên Mac, nhận ra Homebrew lưu tại /opt/homebrew/bin, không phải /usr/local/ thông thường. Làm theo giải pháp sửa:

  1. Mở Terminal.
  2. Thực thi lệnh tạm thêm thư mục mới (ví dụ /opt/homebrew/bin) vào $PATH:
    export PATH=$PATH:/opt/homebrew/bin
  3. Kiểm tra thư mục mới đã thêm với lệnh echo:
    echo $PATH

Test xem lệnh muốn dùng chạy được chưa. Nếu muốn thay đổi PATH bền vững, thêm vào tệp .zshrc, .bash_profile hoặc .bashrc, tùy shell bạn dùng. Làm theo bước:

  1. Thực thi lệnh trong Terminal vào thư mục home: cd
  2. Dùng lệnh liệt kê tệp thư mục home, kiểm tra có tệp .zshrc nếu dùng zsh: ls -la
  3. Nếu không có, tạo với trình soạn thảo nano: touch .zshrc. Nếu có, bỏ qua bước 4.
  4. Chạy lệnh sửa .zshrc với nano: nano .zshrc
  5. Thực thi lệnh thêm thư mục mới (ví dụ /opt/homebrew/bin) vào .zshrc:
    export PATH=$PATH:/opt/homebrew/bin
  6. Thoát Terminal, mở lại.

Giả sử cách này không khắc phục, đọc tiếp cách sau giải quyết lỗi "zsh: command not found" trên Mac M1 hoặc Intel.

Cài lại macOS hoặc khôi phục từ Time Machine

Nếu bạn đào sâu vào hệ thống và lỡ xóa tệp/thư mục hệ thống, có thể đã xóa nhầm tệp thiết yếu cho lệnh Terminal. Nếu vậy, cần khôi phục tệp hệ thống.

Bạn chọn khôi phục trạng thái trước nếu đã sao lưu Mac với Time Machine. Ngược lại, cài lại macOS không định dạng ổ cứng. Lưu ý: dù cài lại OS không gây mất dữ liệu, tốt nhất sao chép tệp quan trọng trước khi hành động.