Khi bạn nhập tên của một chương trình, chẳng hạn như a.out
hệ thống sẽ tìm tệp trong PATH của bạn. Trên hệ thống của tôi, PATH được đặt thành
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Có lẽ bạn cũng tương tự. Để kiểm tra, nhập echo $PATH
vào một thiết bị đầu cuối.
Hệ thống xem qua các thư mục này theo thứ tự cho trước và nếu không thể tìm thấy chương trình sẽ tạo ra command not found
lỗi.
Chuẩn bị lệnh với ./
hiệu quả là "hãy quên PATH, tôi muốn bạn chỉ nhìn trong thư mục hiện tại".
Tương tự, bạn có thể yêu cầu hệ thống chỉ nhìn vào một vị trí cụ thể khác bằng cách thêm lệnh bằng một đường dẫn tương đối hoặc tuyệt đối, chẳng hạn như:
./Debug/hello
: "tìm kiếm hello
trong thư mục con Debug của thư mục hiện tại của tôi."
hoặc /bin/ls
: "tìm ls
trong thư mục /bin
"
Theo mặc định, thư mục hiện tại không nằm trong đường dẫn vì nó được coi là rủi ro bảo mật. Xem tại sao là. không theo đường dẫn theo mặc định? trên Superuser tại sao.
Có thể thêm thư mục hiện tại vào PATH của bạn, nhưng vì những lý do được đưa ra trong câu hỏi được liên kết, tôi không khuyến nghị.
Tôi không chắc tại sao câu trả lời nói không thay đổi PATH của bạn, vì câu trả lời trên SuperUser nói rằng đây là "biện pháp chống vi-rút rất khập khiễng và vô dụng, và không có gì ngăn bạn tự thêm dấu chấm vào đường dẫn."