Tìm hiểu về biến môi trường PATH


Có bao giờ các bạn thắc mắc rằng: khi gõ vào một lệnh trong  Linux thì chương trình Shell, ví dụ như bash sẽ tìm kiếm file thực thi của lệnh đó như thế nào không?

Và có bao giờ bạn gặp phải trường hợp: khi thực thi một lệnh thì Shell báo rằng “command not found” mặc dù bạn đã cài lệnh đó vào máy rồi không?

Hiểu được biến môi trường PATH chính là bạn đã trả lời được cho 2 câu hỏi trên.

1.     PATH là gì?

PATH là một biến môi trường (environment variable) chứa danh sách các thư mục mà chương trình Shell sẽ tìm kiếm cho file thực thi tương ứng với tên lệnh được đưa ra bởi người dùng.

Ví dụ, khi gõ lệnh ls thì thật ra ta đang yêu cầu Shell chạy file /bin/ls (thường thì tên lệnh trùng với tên file thực thi của chương trình). Lệnh ls thực hiện thành công là do mặc định thư mục /bin nằm trong PATH của tất cả user, nếu /bin không có trong PATH bạn phải gõ đường dẫn đầy đủ tới file ls là /bin/ls.

Mỗi user sở hữu một biến PATH riêng. Điều này giải thích vì sao cùng một câu lệnh mà user này thực thi được nhưng user khác lại nhận được thông báo “command not found”.

2.     Thiết lập PATH như thế nào?

Việc chỉnh sửa danh sách các thư mục có trong PATH của một user phụ thuộc vào loại Shell đang sử dụng. Dưới đây là hướng dẫn cấu hình PATH cho bash (là shell mặc định trên hầu hết các bản phân phối Linux) và csh, tsh

  •  Để xem hướng dẫn thiết lập PATH với các shell khác, gõ:

$man shell_name

  •  Để biết được Shell nào đang được dùng, gõ lệnh sau và tìm kiếm phần Shell trong đầu ra của lệnh:

$finger username

>> Gõ lệnh sau để thiết lập PATH đối với bash shell

export PATH=$PATH:thư_mục_1:thư_mục_2:…:thư_mục_n

>> Đối với csh hoặc tsh thì gõ lệnh sau để thiết lập PATH

set PATH = ($PATH thư_mục_1 thư_mục_2 … thư_mục_n)

Trong 2 lệnh trên thì từ $PATH có nghĩa là hệ thống sẽ giữ lại các thư mục có sẵn trước đó trong PATH và sẽ thêm vào PATH các thư mục là thư_mục_1, thư_mục_2,… thư_mục_n.

Lưu ý phải chỉ định đường dẫn đầy đủ cho các thư mục muốn thêm vào PATH, ví dụ như /usr/sbin/usr/local/bin là các đường dẫn hợp lệ. Có thể thêm vào PATH bao nhiêu thư mục tùy ý.

Nếu gõ 2 lệnh trên trong cửa sổ dòng lệnh của Shell thì những thay đổi cho PATH chỉ có hiệu lực trong suốt phiên đăng nhập hiện tại và khi bạn đăng xuất hoặc khởi động lại máy thì thiết lập PATH trước đó mất hiệu lực.

Bạn nên thêm lệnh trên vào file .bashrc (cho bash) hoặc .cshrc (cho tsh và csh) nằm ở thư mục /home/user_name để mỗi lần tài khoản user_name đăng nhập, biến PATH được thiết lập tự động. Để áp dụng PATH chung cho tất cả user thì thêm lệnh trên vào file /etc/profile

Mở rộng: CLASSPATH và cách thiết lập

CLASSPATH cũng là một dạng biến môi trường chứa danh sách các thư mục mà hệ điều hành sẽ tìm kiếm trong các thư mục này các file thư viện, module cho một chương trình.

Ví dụ, để biên dịch một chương trình Java thì cần tới các file *.class , các file này cần thiết nằm trong các thư mục có trong CLASSPATH.

Tùy theo loại Shell bạn đang sử dụng mà câu lệnh để thiết lập cho CLASSPATH khác nhau

– Với bash shell

export CLASSPATH=$CLASSPATH:/java/classes:/home/uit/myclasses

– Với csh, tsh

set CLASSPATH = ($CLASSPATH /java/classes /home/tchin/myclasses)

Ý nghĩa của $CLASSPATH và cách cấu hình cho Shell tự động thiết lập CLASSPATH mỗi khi bạn đăng nhập giống với PATH

–manthang

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s