dòng Bất kỳ bắt đầu với #
là một bình luận. PATH=
đặt giá trị của biến số PATH
, $ PATH mở rộng thành giá trị hiện tại và export
ở đầu làm cho giá trị có sẵn cho các chương trình mà bạn chạy từ thiết bị đầu cuối.
Giả sử giá trị ban đầu của PATH là /usr/bin:/bin
.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Thay thế $PATH
bằng giá trị trước đó của $ PATH. Vì vậy, các bộ trên PATH
để
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin
Di chuyển về phía trước,
export PATH=$PATH:/usr/local/mysql/bin
Một lần nữa, thay thế $ PATH với giá trị trước đó:
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
Sau
export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH
chúng tôi có
/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
(Các ~
là một dấu hiệu đặc biệt mà sẽ được thay thế bằng đường dẫn đến thư mục home của bạn, nhưng bạn sẽ nhận được hình ảnh.)
Và cuối cùng, sau khi
export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH
chúng tôi nhận được
/Users/android-sdks/platform-tools:/Users/android-sdks/tools:/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
PATH
được sử dụng để tìm các lệnh bạn nhập vào dấu phẩy và dòng.Vì vậy, nếu bạn gõ foo
, vỏ sẽ tìm kiếm những cái tên dưới đây, theo thứ tự quy định:
/Users/android-sdks/platform-tools/foo
/Users/android-sdks/tools/foo
/android-sdks/platform-tools/foo
~/android-sdks/tools/foo
/opt/local/bin/foo
/opt/local/sbin/foo
/usr/bin/foo
/bin/foo
/usr/local/mysql/bin/foo
Để xem giá trị hiện tại của PATH, chạy
echo $PATH
bạn nên thêm thư mục mới đến đầu của PATH
hoặc đến cuối? Nó không phải luôn luôn quan trọng, nhưng đôi khi nó. Nó phụ thuộc vào vị trí bạn muốn hệ thống kiểm tra trước.
Bạn nên thêm vào đầu nếu mục tiêu là tìm kiếm các thư mục khác trước khi tìm kiếm các thư mục mặc định. Ví dụ: git
là một tiện ích được sử dụng để quản lý mã nguồn. Nếu tôi muốn cài đặt một phiên bản mới hơn của git
trong ~/git và sử dụng rằng theo mặc định, anh sẽ làm:
export PATH=~/git/bin:$PATH
này có nghĩa là ~/git/bin/git sẽ ghi đè/opt/local/bin/git.
Mặt khác, tôi có thể muốn quản trị viên cài đặt git
toàn hệ thống. Nếu tôi muốn sử dụng bản sao địa phương của tôi chỉ cho đến khi người quản trị làm cho nó có sẵn cho tất cả mọi người, thì điều này có ý nghĩa hơn:
export PATH=$PATH:~/git/bin
Trong trường hợp này ~/git/bin/git
sẽ chỉ được sử dụng nếu /opt/local/bin/git
không đã tồn tại kể từ khi /opt/local/bin
trước đó trong đường dẫn.
Rất nhiều lệnh sẽ không tồn tại ở nhiều nơi. Ví dụ: bạn có thể viết my-backup-script
và đặt nó trên Apple Time Capsule tại /Volumes/Capsule/scripts
. Nó không có khả năng sẽ có một lệnh gọi là my-backup-script
ở bất kỳ vị trí nào khác để xung đột. Vì vậy, một trong các lệnh sau đây sẽ cho phép bạn gõ my-backup-script
và chạy kịch bản phải:
export PATH=/Volumes/Capsule/scripts:$PATH
hoặc
export PATH=$PATH:/Volumes/Capsule/scripts
Là một tốt hơn? Lời khuyên của tôi là làm điều sau. Hãy nhớ rằng hệ thống sẽ cần phải tìm kiếm các thư mục trong $PATH
, theo thứ tự, cho mọi lệnh mà nó cần tìm. Hầu hết các lệnh sẽ được trên hệ thống cục bộ, do đó, nó có ý nghĩa nhất để đặt bộ nhớ mạng chậm hơn ở cuối đường dẫn.
Vậy tại sao một số người lại thêm vào $ PATH khi rõ ràng bạn nên thêm tiền? – Pacerier
Bạn nên thêm vào trước nếu mục tiêu là tìm kiếm một thư mục cụ thể trước khi tìm kiếm các địa điểm còn lại được đề cập trong 'PATH'. Nếu ai đó chọn nối thêm, họ có thể có các mục tiêu khác nhau. Cập nhật câu trả lời với một số chi tiết. – GargantuChet