Lỗi bash: command not found là một lỗi bạn sẽ thường gặp phải trên môi trường bash và khiến bạn không thể thực thi các lệnh trên hệ điều hành Linux. Trong bài viết này Vietnix sẽ giúp bạn tìm hiểu rõ hơn về nguyên nhân xảy ra cũng như cách khắc phục lỗi này qua 5 ví dụ đơn giản và nhanh chóng để giúp bạn tiếp tục làm việc mà không bị gián đoạn.
Path variable – hiểu đúng về biến Path trong Bash shell
Biến Path (hay còn được gọi là biến đường dẫn) có tính năng trong việc thông báo cho hệ thống shell về các vị trí cụ thể để tìm kiếm script (tập lệnh). Biến path bao gồm các đường dẫn như /usr/local/sbin, /usr/bin, /usr/local/bin khi thực hiện các script trong môi trường Bash, đặc biệt thường thấy trên hệ điều hành Linux.
Thực tế, bạn không cần phải chỉ định biến path mỗi lần, vì nó được cấu hình sẵn để tìm kiếm chương trình trong tất cả các thư mục.
Nguyên nhân nào gây ra lỗi Bash: command not found?
Khi bạn gặp phải thông báo lỗi bash: command not found, tức hệ thống không thể định vị lệnh mà bạn đang cố gắng thực thi. Điều này có thể xảy ra do 3 nguyên nhân thường thấy như:
- Lỗi chính tả: Đôi khi, chỉ một sai sót nhỏ trong cách gõ tên lệnh hoặc cú pháp không đúng cũng đủ để Bash không nhận ra lệnh bạn muốn chạy.
- Lệnh chưa được cài đặt: Nếu bạn cố gắng sử dụng một lệnh mà hệ thống của bạn chưa từng biết đến, chắc chắn Bash sẽ báo lỗi “command not found”.
- Biến môi trường PATH chưa chính xác: Bash sử dụng biến PATH để tìm kiếm các chương trình thực thi, nếu PATH chưa được cấu hình đúng hoặc thiếu các thư mục quan trọng, Bash sẽ không thể tìm thấy lệnh bạn cần.
Bên cạnh đó, bạn có thể tham khảo qua các câu lệnh trong Linux để hiểu chi tiết hơn khi thực hiện các script trong môi trường Bash.
Đặc biệt, nếu như bạn là một người mới bắt đầu tìm hiểu về Bash Script thì có thể tham khảo qua 2 chủ đề về cách thực thi script trong Bash để nắm bắt cách vận hành khi thực hiện các tập lệnh.
- Chạy tập lệnh Bash: Kỹ năng bắt đầu sử dụng Bash Script với cách tạo script Bash chi tiết, dễ hiểu.
- Chạy song song lệnh Bash với nhiều script: Kỹ thuật chạy nhiều lệnh cùng lúc trong script – tính năng phổ biến khi thực hiện lệnh.
5 ví dụ về cách sửa lỗi Bash: command not found
Ví dụ 1: Kiểm tra lỗi chính tả, sai sót trong cú pháp lệnh
Khi bạn gõ sai một tập lệnh Script Bash bất kỳ, bạn sẽ không nhận diện được và trả về thông báo lỗi Bash: command not found trên terminal.
Ví dụ, bạn hãy kiểm tra bằng cách nhập sai lệnh ls như sau:
lss
Sau khi bạn gõ lệnh trên, bạn sẽ thấy kết quả trả về thông báo lỗi “Command ‘lss’ not found”. Điều này xảy ra do lỗi gõ sai hoặc nói cách khác, thư mục /bin không chứa lệnh lss
. Vì vậy, để tránh lỗi “Bash: command not found”, bạn cần đảm bảo nhập lệnh chính xác lệnh ls như sau:
ls
Như bạn có thể thấy như hình trên, lệnh ls bây giờ có thể trả về danh sách các file và thư mục của thư mục hiện tại mà không có bất kỳ lỗi nào.
Ví dụ 2: Cài đặt và xác minh dòng lệnh trên hệ thống
Một nguyên nhân phổ biến khác gây ra lỗi Bash: command not found là lệnh chưa được cài đặt trên hệ thống của bạn. Bạn hãy đảm bảo rằng lệnh bạn muốn chạy đã được cài đặt trên hệ thống.
Ví dụ, bạn muốn kiểm tra phiên bản của trình phát video VLC bằng cách sử dụng terminal. Nhưng, bạn gặp lỗi command not found khi chạy lệnh vlc --version
như hình dưới đây:
Như hình ở trên bạn có thấy rằng VLC chưa được cài đặt trên hệ thống. Vì vậy, bạn cần cài đặt VLC sau đó mới thực hiện kiểm tra phiên bản.
Để cài đặt trình phát VLC trong terminal, bạn sử dụng lệnh sudo theo cú pháp sau:
sudo apt install vlc
Sau khi nhập mật khẩu sudo (nếu được yêu cầu), bạn hãy đợi vài giây để quá trình cài đặt hoàn tất. Sau đó, bạn gõ lệnh vlc --version
để kiểm tra phiên bản của trình phát VLC đã cài đặt trong terminal.
Trong hình ở trên có thể thấy lệnh đã trả về phiên bản của trình phát VLC cùng với thông tin liên quan.
Ví dụ 3: Tìm vị trí dòng lệnh trong biến PATH
Trong Linux, PATH là một biến môi trường cho hệ thống biết nơi tìm kiếm các file hoặc lệnh cụ thể. Thông thường, khi bạn nhập một lệnh trên terminal, Linux sẽ lần lượt tìm kiếm lệnh đó trong các thư mục được liệt kê trong biến PATH. Nếu không tìm thấy, bạn sẽ gặp phải lỗi Bash: command not found.
Ví dụ, lệnh ls
nằm trong thư mục /usr/bin. Nếu đường dẫn này không có trong biến PATH, bạn có thể gặp lỗi command not found khi chạy lệnh ls.
Dưới đây là hình ảnh minh họa lỗi command not found khi /usr/bin không có trong PATH
Để khắc phục, bạn hãy đảm bảo thư mục chứa lệnh /usr/bin nằm trong biến PATH. Bạn có thể thêm đường dẫn vào biến PATH bằng cách sử dụng lệnh export với cú pháp sau:
export PATH="/bin:$PATH"
Để kiểm tra xem lệnh đã hoạt động hay chưa, bạn hãy thử chạy lại lệnh ls
trong terminal.
Như bạn có thể thấy, lệnh ls
đã có thể liệt kê các file và thư mục hiện tại vì /usr/bin đã được thêm vào biến PATH.
Ví dụ 4: Kiểm tra dòng lệnh có phải là alias không?
Alias (bí danh, biệt danh) là một tính năng cho phép bạn tạo ra các phiên bản rút gọn của các lệnh phức tạp, giúp tiết kiệm thời gian và nâng cao hiệu suất làm việc.
Ví dụ, trên Ubuntu, các bí danh phổ biến như ll (viết tắt của ls -l
) và la (viết tắt của ls -a
) đã được cài đặt sẵn.
Tuy nhiên, khi bạn đã quen sử dụng ll và la trên hệ thống của mình, nhưng khi chuyển sang một máy chủ Linux khác, ll lại không được nhận diện. Nguyên nhân là do lệnh này không phải là một lệnh gốc và không thể được cài đặt riêng biệt. Trong những trường hợp như vậy, bạn hãy kiểm tra xem lệnh có tồn tại ở nơi khác hay không bằng cách tìm kiếm trên internet. Nếu không, có thể đó là một alias chỉ dành riêng cho một số hệ thống nhất định.
Để kiểm tra các alias đã được định nghĩa trong hệ thống của bạn, bạn có thể chạy lệnh alias trong terminal:
Như bạn thấy, các lệnh ll
và la đã tồn tại trong hệ thống dưới dạng alias. Tuy nhiên, nếu cả 2 không có trong hệ thống, bạn có thể tự tạo alias bằng lệnh sau:
alias alias_name='command'
Trong hình minh hoạ ở trên, một alias có tên year đã được tạo, chứa lệnh date | tail -c 5
. Vì vậy, bất cứ khi nào alias year được gọi trong terminal sẽ trả về năm hiện tại.
Ví dụ 5: Thực thi file Bash trong directory hiện tại
Bạn có thể gặp lỗi Bash: command not found khi muốn chạy một script Bash mà sử dụng đường dẫn không đầy đủ hoặc cú pháp lệnh không chính xác.
Ví dụ, bạn muốn chạy script Bash có tên “Greetings” ngay trong thư mục hiện tại. Trường hợp bạn quên thêm dấu ./ hoặc lệnh bash
trước tên file, hệ thống sẽ không thể định vị script và hiển thị lỗi. Trong trường hợp này, bạn sẽ gặp lỗi như hình dưới đây:
Để sửa lỗi “bash: command not found”, bạn hãy sử dụng dấu ./ hoặc lệnh bash
theo sau là tên của file Bash khi thực thi trong thư mục hiện tại:
Như bạn có thể thấy trong hình minh hoạ phía trên, cả hai cách sử dụng dấu ./ và lệnh bash đều chạy file “Greetings” thành công.
Cách sửa lỗi sudo: [command name]: command not found”?
Khi gặp phải lỗi sudo: [command name]: command not found” trong môi trường Bash, điều này thường chỉ ra rằng lệnh bạn đang cố gắng thực thi với quyền quản trị (sudo) hoặc chưa được cài đặt trên hệ thống, hoặc không có trong biến môi trường PATH.
Để sửa lỗi này, trước tiên hãy đảm bảo rằng lệnh bạn muốn chạy tồn tại trên hệ thống. Nếu có, bạn có thể sử dụng sudo để chỉ định toàn bộ đường dẫn đến lệnh. Nếu không, bạn có thể thêm thư mục chứa lệnh vào biến môi trường PATH.
Ví dụ, bạn gặp lỗi sudo: vim: command not found khi muốn chạy trình soạn thảo văn bản Vim nguyên nhân là vì bạn chưa cài đặt Vim hoặc đường dẫn đến Vim chưa được thêm vào biến PATH.
Bây giờ để sửa lỗi này, bạn cần cài đặt Vim bằng lệnh sau:
sudo apt install vim
Sau đó, bạn sử dụng lệnh vim --version
để xác minh quá trình cài đặt:
Như bạn thấy trong hình ở trên, Vim đã được cài đặt thành công và bạn có thể sử dụng mà không gặp lỗi command not found nữa.
So sánh Bash: command not found vs sudo: command not found
Dưới đây là bảng so sánh chi tiết hơn về hai lỗi “bash: command not found” và “sudo: command not found”:
Loại lỗi | Nguyên nhân | Ngữ cảnh | Ví dụ |
---|---|---|---|
bash [command name] not found | Lệnh không được tìm thấy trong đường dẫn tìm kiếm của shell Bash. | Xảy ra khi chạy một lệnh trong shell Bash nhưng lệnh đó chưa được cài đặt hoặc không có trong biến PATH. | Gõ một lệnh không xác định hello_world trong shell Bash. |
sudo [command name] not found | Lệnh sudo được tìm thấy nhưng lệnh được chỉ định sau sudo không được tìm thấy. | Xảy ra khi chạy một lệnh với sudo nhưng lệnh được chỉ định sau sudo không được tìm thấy hoặc chưa được cài đặt. | Gõ sudo apt-get update nhưng apt-get chưa được cài đặt hoặc không có trong PATH, trong khi sudo thì có sẵn. |
4 cách sửa lỗi Bash: command is not found trong Linux
Cách 1: Kiểm tra tính khả dụng của các shell khác
Hãy thử sử dụng các shell khác như sh, dash, hoặc zsh để xem liệu chúng có hoạt động không. Điều này giúp xác định liệu vấn đề có nằm ở Bash hay không.
Cách 2: Kiểm tra, cập nhật PATH của hệ thống bằng lệnh echo
Đảm bảo rằng đường dẫn đến thư mục chứa Bash (thường là /bin) đã được thêm vào biến PATH. Sử dụng lệnh echo để kiểm tra và cập nhật PATH nếu cần thiết bằng lệnh export PATH="/bin:$PATH".
echo $PATH
Cách 3: Cài đặt lại Bash để khắc phục sự cố
Nếu bạn đã cài đặt Bash nhưng không tìm thấy đường dẫn đến Bash trong PATH, bạn có thể thử cài đặt lại Bash để khắc phục sự cố. Để cài đặt hoặc cài đặt lại Bash trong Ubuntu, bạn hãy chạy các lệnh sau:
sudo apt update
sudo apt install --reinstall bash
Cách 4: Khởi động vào môi trường Live từ thiết bị ngoài
Nếu các cách trên không hiệu quả, hãy khởi động vào môi trường Live từ USB hoặc CD/DVD. Từ đây, bạn có thể truy cập hệ thống file và sửa chữa trực tiếp vấn đề.
Như vậy, bằng cách làm theo các bước này, bạn sẽ có thể khắc phục sự cố nếu tập lệnh Bash
không được tìm thấy trong Linux.
Câu hỏi thường gặp
Bash Error: command not found chỉ xảy ra với người mới bắt đầu sử dụng Linux không?
Câu trả lời là không. Không chỉ giới hạn với những người bắt đầu sử dụng Linux, lỗi này thường gặp với những người đang tập làm quen với dòng lệnh.
Có sự khác biệt giữa lỗi bash: command not found và lỗi command not found không?
Không có quá nhiều điểm khác biệt giữa hai lỗi. Ngoài ra, có những điểm khác biệt như: môi trường thực hiện lệnh (shell) hoặc môi trường thực thi lệnh (script hoặc chương trình khác)
Lời kết
Bài viết của Vietnix đã giới thiệu đến bạn những cách khắc phục lỗi “bash: command not found” thường gặp trên hệ điều hành Linux. Hy vọng với những hướng dẫn chi tiết trên, bạn đã có thể tự tin giải quyết sự cố và tiếp tục sử dụng hệ thống một cách trơn tru. Nếu bạn còn bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới để được giải đáp cụ thể hơn.