PDA

View Full Version : [Q] Command not found



woodyvn
30-12-2002, 06:19
Trong RH Linux 7.3, khi tôi biên dịch một chương trình chẳng hạn hello.c thành hello, thì khi gõ hello ở dấu nhắc để thực thi chương trình thì bash shell toàn thông báo là command not found, hoặc khi tôi su vào root nhưng có một số lệnh không thực hiện được như rdev hay useradd và cũng nhận được thông báo tương tự. Xin các bạn giúp mình với.

coolman
30-12-2002, 09:58
Oh, có lẽ bạn cần 1 số khái niệm về shell.

Bạn thân mến, các biến môi trường rất quan trọng trong Linux. các vấn đề bạn gặp phải là liên quan đến biến môi trường PATH.
bạn có thể dùng lênh : echo $PATH để xem chi tiết về các đường dẫn.
Để chạy chương trình hello. bạn cần đưa vào đường dẫn cụ thể của chương trinh
vd : /home/project/hello/hello
hoặc nếu đang ở thư mục hiên tại. bạn có thể dùng : ./hello. lúc này chương trinh hello sẽ được tìm kiếm từ thư mục hiện tai. (Trong Linux, thu mục hiện tại là '.' còn thư much cha la '..').
Khi bạn dánh hello, hệ thông sẽ kiếm chương trình hello trong các đường dẫn mà đã được bạn chỉ ra trong biên môi trương PATH trước, theo thứ tự từ trước ra sau. vì vậy chương trình hello của bạn sẽ không dược tìm thấy. trừ khi bạn copy vào /bin, /usr/bin hoặc /usr/local/bin.

Các lệnh useradd cà rdev đều là các lênh của superuser ( root). các lẹnh này được dể trong các thư mục /sbin, /usr/sbin. /usr/local/sbin. vì vậy các user thường không thể thấy được. khi bạn su hoặc sudo, thì các biến môi trường như PATH vẫn là của user hiện tại nên các dường đẫn vẫn là cho user hiện tại.
Để lấy các biến môi truờng của root bạn dừng các lệnh sau:
$ su -
hoặc
$ sudo su -

lúc này các biến môi trường mới thật sự là của root. nên các lệnh trên sẽ được tìm tháy. bạn có thể dùng lệnh env hoặc echo $PATH để thấy sự khác biệt

cheers

ech_op_49
08-06-2010, 09:31
Thank bạn Coolman. Mình đang cần tìm thông tin về vấn đề này