Những thứ đơn giản
PATH=$PATH:~/opt/bin
hoặc là
PATH=~/opt/bin:$PATH
tùy thuộc vào việc bạn muốn thêm ~/opt/bin
vào cuối (để được tìm kiếm sau tất cả các thư mục khác, trong trường hợp có một chương trình có cùng tên trong nhiều thư mục) hoặc ở đầu (được tìm kiếm trước tất cả các thư mục khác).
Bạn có thể thêm nhiều mục cùng một lúc. PATH=$PATH:~/opt/bin:~/opt/node/bin
hoặc các biến thể về công việc đặt hàng chỉ là tốt. Đừng đặt export
ở đầu dòng vì nó có các biến chứng bổ sung (xem bên dưới phần Ghi chú trên các vỏ khác không phải là bash).
Nếu bạn PATH
được xây dựng bởi nhiều thành phần khác nhau, bạn có thể kết thúc với các mục trùng lặp. Xem Làm thế nào để thêm đường dẫn thư mục chính được Unix phát hiện ra lệnh nào? và Xóa các mục nhập $ PATH trùng lặp bằng lệnh awk để tránh thêm các mục trùng lặp hoặc xóa chúng.
Nhân tiện, một số bản phân phối sẽ tự động đưa ~/bin
vào PATH của bạn nếu nó tồn tại.
Đặt nó ở đâu
Đặt dòng để chỉnh sửa PATH
trong ~/.profile
, hoặc trong ~/.bash_profile
nếu đó là những gì bạn có.
Lưu ý rằng ~/.bash_rc
không được đọc bởi bất kỳ chương trình nào và ~/.bashrc
là tệp cấu hình của các trường hợp tương tác của bash. Bạn không nên xác định các biến môi trường trong ~/.bashrc
. Vị trí thích hợp để xác định các biến môi trường như PATH
là ~/.profile
(hoặc ~/.bash_profile
nếu bạn không quan tâm đến các shell khác ngoài bash). Xem sự khác biệt giữa chúng và tôi nên sử dụng cái nào?
Đừng đặt nó vào /etc/environment
hoặc ~/.pam_environment
: đây không phải là các tệp shell, bạn không thể sử dụng các thay thế như $PATH
trong đó. Trong các tệp này, bạn chỉ có thể ghi đè một biến, không thêm vào nó.
Biến chứng tiềm ẩn trong một số tập lệnh hệ thống
Bạn không cần export
nếu biến đã có trong môi trường: mọi thay đổi về giá trị của biến được phản ánh trong môi trường. PATH
luôn luôn xuất hiện trong môi trường; tất cả các hệ thống unix thiết lập nó rất sớm (thường là trong quá trình đầu tiên, trên thực tế).
Tại thời điểm đăng nhập, bạn có thể dựa vào PATH
việc đã ở trong môi trường và đã chứa một số thư mục hệ thống. Nếu bạn đang viết một kịch bản có thể được thực hiện vào đầu trong khi thiết lập một số loại môi trường ảo, bạn có thể cần phải đảm bảo rằng PATH
không bị để trống và xuất khẩu: nếu PATH
vẫn còn unset, sau đó một cái gì đó như PATH=$PATH:/some/directory
sẽ đặt PATH
để :/some/directory
, và các thành phần rỗng ở đầu có nghĩa là thư mục hiện tại (như .:/some/directory
).
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Ghi chú về vỏ khác với bash
Trong bash, ksh và zsh, export
là cú pháp đặc biệt, và cả hai PATH=~/opt/bin:$PATH
và export PATH=~/opt/bin:$PATH
làm điều đúng ngay cả. Trong các shell kiểu Bourne / POSIX khác, chẳng hạn như dấu gạch ngang ( /bin/sh
trên nhiều hệ thống), export
được phân tích cú pháp như một lệnh thông thường, hàm ý hai điểm khác biệt:
Vì vậy, trong các shell như dash, export PATH=~/opt/bin:$PATH
thiết lập PATH
chuỗi ký tự ~/opt/bin/:
theo sau là giá trị PATH
lên đến không gian đầu tiên.
PATH=~/opt/bin:$PATH
(một bài tập trần) không yêu cầu báo giá và thực hiện đúng. Nếu bạn muốn sử dụng export
trong một tập lệnh di động, bạn cần phải viết export PATH="$HOME/opt/bin:$PATH"
, hoặc PATH=~/opt/bin:$PATH; export PATH
(hoặc PATH=$HOME/opt/bin:$PATH; export PATH
cho tính di động đối với cả vỏ Bourne không chấp nhận export var=value
và không mở rộng dấu ngã).
¹ Đây là không đúng sự thật trong vỏ Bourne (như trong Bourne shell thực tế, chứ không phải hiện đại vỏ POSIX-style), nhưng bạn đang rất khó có khả năng gặp phải vỏ cũ như những ngày này.