Tips

Hướng dẫn cách thêm đường dẫn vào PATH cho Windows, macOS và Linux

Khi cài đặt Android Studio, Java JDK hay NodeJS, v.v…, bạn hay được nhắc phải thêm $ANDROID_HOME, $JAVA_HOME hay $NODE_PATH vào $PATH để cấu hình cho việc gọi lệnh từ Command Prompt hay Terminal. Vậy, làm sao để thiết lập $PATH?

1. $PATH là gì?

Đầu tiên, bạn bật Command Prompt trên Windows hoặc Terminal trên macOS và Linux lên, và gõ dòng lệnh sau:

Bạn sẽ nhận được output tương tự như sau:

Vả bây giờ, bạn gõ một lệnh mới:

Và output sẽ báo, đại loại là nó không tìm thấy chương trình nào là abc123xyz456 cả, hay đó không phải là một chương trình, tùy vào hệ điều hành máy tính của bạn. Vậy, tại sao bạn gọi ping được, còn abc123xyz456 lại không được?

Thực tế, ping là một excutable file nằm trong một thư mục, chứ không phải là “câu lệnh tương tác với hệ thống” như một số bạn nghĩ. Bạn có thể tìm địa chỉ của nó với câu lệnh where trên Windows hay whereis trên macOS và Linux. Chẳng hạn, tôi chạy trên Windows:

Và Linux thì tôi có lệnh bên dưới, macOS cũng hoàn toàn tương tự mà thôi.

Như vậy, ping là một chương trình hẳn hoi chứ không phải là một “câu lệnh của hệ thống cấp cho người dùng để tương tác với hệ thống” đâu bạn à. Nó là một chương trình chạy trong dòng lệnh như cách mà bạn viết một chương trình C/C++ hay Java đơn giản rồi cho chạy qua dòng lệnh để xuất output vậy. Tuy nhiên, bạn có để ý sự khác biệt khi chạy chương trình của bạn làm, và tên ping này không? Khi cho thực thi chương trình của bạn, bạn phải trỏ tới đúng thư mục để chạy, chẳng hạn “./MyProject/C/HelloWorld” thì Command Prompt hay Terminal mới nhận diện được chương trình của bạn nằm ở đâu, còn với tên ping này thì (coi như) đường dẫn tới nó đã được tự động thêm sẵn. Vì sao vậy? Đơn giản thôi, vì đường dẫn của nó đã được nằm trong $PATH sẵn rồi. Vậy, bạn có thể hiểu theo cách bình dị nhất, thực tế nhất, “cạp cạp” nhất là $PATH là tập hợp các đường dẫn có sẵn để khi bạn chạy một chương trình nằm trong $PATH, bạn chỉ cần gõ tên chương trình ra mà thôi, không cần phải truyền đầy đủ đường dẫn tới tập tin thực thi. Theo tôi, đó là cách hiểu dễ dàng nhất chứ không phải định nghĩa trong Giáo trình của các bạn.

Chẳng hạn, tên ping kia nằm ở vị trí được tích hợp sẵn trong $PATH của hệ thống, nên khi chạy, bạn không cần thiết phải truyền đầy đủ đường dẫn của nó vào Command Prompt hay Terminal mà chỉ cần truyền tên của nó là ping là được rồi. Nếu bạn thêm đường dẫn “MyProject/C” vào $PATH luôn thì sau này, bạn cũng có thể gọi “HelloWorld ” là hệ thống sẽ tự mò tới địa chỉ trên mà chạy “HelloWorld” của bạn luôn, hệt như tên ping kia vậy. Với định nghĩa trên, bạn có thể hiểu tầm quan trọng của $PATH rồi phải không? Và bây giờ là sang phần cấu hình $PATH trên các hệ điều hành quen thuộc của chúng ta:

2. Trên Windows:

Trên Windows 10, 8 và 7, bạn rê chuột vào phần phía dưới bên trái màn hình, chỗ có icon Windows và nhấn chuột phải, chọn System. Bạn cũng có thể chọn Properties khi click phải vào My Computer hay This PC. Tiếp theo, bạn chọn Advanced System Settings ở cột bên trái. Chọn tab Advanced và nhấn nút Environment variables. Bạn chọn New hoặc Edit một variable của User hay System là tùy vào mục đích của bạn. Hộp thoại hiện ra gồm có hai phần input.

Phần Variable name: Tên của variable. Thông thường bạn chỉ cần đặt nó là PATH là được, tuy nhiên, một số ứng dụng hay frameworks yêu cầu tên riêng được họ định nghĩa và bạn phải dùng tên này, chẳng hạn với Java JDK thì nó là JAVA_HOME, với Android Sdk là ANDROID_HOME, của NodeJS là NODE_PATH, v.v…

Phần Variable value: Đường dẫn trỏ tới (các) tập tin thực thi mà khi dùng thì bạn có thể đánh trực tiếp tên của (chúng) nó vào CMD hoặc Cmder hay Power Shell, hoặc đối với các bộ ứng dụng hay frameworks cụ thể thì đó sẽ là đường dẫn được họ quy định sẵn, chẳng hạn như với Java JDK hay Android Sdk, bạn sẽ trỏ chúng tới nơi bạn cài đặt hoặc giải nén – nói chung là chứa – các bộ Sdk tương ứng, chẳng hạn như bạn đặt Android Sdk ở D:\Android_Sdk thì cứ truyền đường dẫn (Path) đó vào, còn với NodeJS là nơi bạn chứa node_modules, thường nằm trong C:\Program Files\nodejs\node_modules.

Sau khi đặt PATH xong, bạn nên Log out và Log in lại PC hoặc Restart nếu là System PATH. Tốt nhất, bạn nên đặt PATH cho User hiện tại thay cho toàn hệ thống để tránh trường hợp làm phức tạp hóa vấn đề trên những User accounts khác. Bạn cũng có thể sử dụng lại các PATH vars có sẵn. Chẳng hạn như bạn đặt ANDROID_HOME là D:\Android_Sdk thì phần PATH cho android-platform-tools chỉ đơn giản là %ANDROID_HOME%/platform-tools/ là đủ.

3. Trên macOS và Linux:

Việc đặt PATH trên macOS và Linux có vẻ dễ dàng hơn rất nhiều so với Windows. Nếu bạn chỉ muốn đặt PATH trên riêng tài khoản người dùng hiện tại, bạn chỉ cần mở tập tin .bashrc trong thư mục ~ (ứng với $HOME) và thêm vào (các) dòng theo mẫu sau ở CUỐI TẬP TIN:

Trong đó, PATH_NAME là tên PATH varibale. Thông thường bạn chỉ cần đặt nó là PATH là được, tuy nhiên, một số ứng dụng hay frameworks yêu cầu tên riêng được họ định nghĩa và bạn phải dùng tên này, chẳng hạn với Java JDK thì nó là JAVA_HOME, với Android Sdk là ANDROID_HOME, của NodeJS là NODE_PATH, v.v…

Phần $path là đường dẫn (Path) trỏ tới (các) tập tin thực thi mà khi dùng thì bạn có thể đánh trực tiếp tên của (chúng) nó vào CMD hoặc Terminal, hoặc đối với các bộ ứng dụng hay frameworks cụ thể thì đó sẽ là đường dẫn được họ quy định sẵn, chẳng hạn như với Java JDK hay Android Sdk, bạn sẽ trỏ chúng tới nơi bạn cài đặt hoặc giải nén – nói chung là chứa – các bộ Sdk tương ứng, chẳng hạn như bạn đặt Android Sdk ở ~/Android/Sdk thì cứ truyền đường dẫn (Path) đó vào, còn với NodeJS là nơi bạn chứa node_modules, thường nằm trong usr/lib/node_modules. Bạn cũng có thể sử dụng lại các PATH vars có sẵn. Chẳng hạn như bạn đặt ANDROID_HOME là ~/Android/Sdk thì phần PATH cho android-platform-tools chỉ đơn giản là $ANDROID_HOME/platform-tools/ là đủ.

Dưới đây là trích đoạn tập tin .bashrc của tôi, bạn có thể tham khảo và làm tương tự:

Bạn cũng có thể thao tác với tập tin ~/.bash_profile với macOS và .profile với Linux. Nhưng lưu ý bạn chỉ thao tác với một trong hai, hoặc .bashrc hoặc .bash_profile.profile mà thôi, nếu không sẽ dẫn tới xung đột và bạn không thể log in vào máy được. Trong trường hợp này, bạn không cần dùng từ khóa export, nhưng cũng cho ra hiệu quả tương tự:

Đẻ sử dụng PATH ngay, bạn chạy câu lệnh sau trong Terminal:

Hoặc trực tiếp thực thi các tập tin .bashrc, .bash_profile hay .profile trong Terminal cũng được, hoặc Log out rồi Log in lại. Cách nào cũng cho hiệu quả như nhau.

Trong trường hợp bạn muốn đặt PATH cho cả hệ thống (tôi không khuyến nghị việc này, với lí do như trên phần Windows) thì bạn thực hiện tương tự với /etc/paths đối với macOS, hay /etc/bash.bashrc và /etc/profile với Linux dưới quyền su (sudo). Lần này thì bạn cần khởi động lại cả hệ thống để các thiết lập được áp dụng.

Hi vọng các bạn sẽ không còn cảm thấy khó khăn khi đọc tới các hướng dẫn yêu cầu “You can add … to your PATH for quick launch and other frameworks can see your installed SDK”. Chúc các bạn thành công.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.