2016-01-25 11 views
6

Trên máy Mac của tôi, tôi đã sử dụng rất nhiều. Đối với cài đặt môi trường của tôi, tôi đã thêm /usr/bin/usr/local/bin vào $PATH như bình thường.

Trong khi tôi biết những gì /usr/bin/usr/local/bin là về, tôi tò mò mà nên đi trước khi khác, theo quy ước? Và có một lý do cụ thể cho điều đó không?

Tương tự là dành cho /usr/lib/usr/local/lib - hy vọng câu trả lời giống hoặc tương tự.

nhiều hơn một chút - Chỉ là phần mở rộng của câu hỏi ban đầu, bạn sẽ đặt hàng như thế nào sau đây trong $ PATH theo quy ước và tại sao?

/bin 
/sbin 
/usr/bin 
/usr/sbin 
/usr/local/bin 
/usr/local/sbin 
/opt/local/bin 
/opt/local/sbin 
+0

Xem thêm [câu hỏi liên quan này] (http://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin-on-linux). – e0k

+0

Cảm ơn sự giúp đỡ. Bài đăng đó cũng rất hữu ích. – Bruce

Trả lời

17

/usr/bin là nơi các tệp nhị phân được cung cấp bởi hệ điều hành. /usr/local/bin là nơi người dùng cung cấp tệp nhị phân. Khi bạn gõ tên của một lệnh trên dòng lệnh, trình bao tìm kiếm lệnh đã nói trong các đường dẫn có trong biến môi trường $PATHtheo thứ tự. Mẫu chung là có /usr/local/bin trước /usr/bin trong $PATH. Điều này cho phép bạn cài đặt các phiên bản nhị phân thay thế và yêu cầu họ "ghi đè" các tập tin nhị phân được cung cấp bởi hệ điều hành. Và các bản cập nhật hệ điều hành sẽ không tự động cài đặt gói người dùng của bạn. Mẫu này được sử dụng đáng kể trong OSX bởi công cụ quản lý gói Homebrew phổ biến.

Ví dụ, tại thời điểm viết bài này, OSX El Capitan cung cấp git phiên bản 2.5.4 (trong /usr/bin). Nếu bạn muốn có một phiên bản mới hơn, bạn có thể sử dụng Homebrew để cài đặt phiên bản git 2.7.0 (vào /usr/local/bin). Kể từ /usr/local/bin xuất hiện trước /usr/bin trong biến môi trường $PATH, khi bạn phát lệnh git trong trình bao, phiên bản Homebrew mới hơn sẽ được sử dụng.

On tươi mới Mac chạy OSX El Capitan (Tôi tình cờ có một), các tập tin /etc/paths chứa sau:

/usr/local/bin 
/usr/bin 
/bin 
/usr/sbin 
/sbin 

trong đó sản xuất biến $PATH môi trường sau đây:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

mà tương thích với homebrew. Tôi khuyên bạn nên gắn bó với mặc định OSX này. Nếu bạn thực sự muốn bao gồm /usr/local/sbin (được liệt kê trong câu hỏi của bạn ở trên), tôi sẽ đặt nó ngay trước /usr/sbin vì những lý do tương tự ở trên. Đối với /opt/local/bin/opt/local/sbin, tôi chưa đích thân tìm thấy cần thêm chúng vào đường dẫn nhưng có vẻ như chúng có thể ở vị trí tương tự như các số tương tự /usr/local của chúng, vì /opt theo truyền thống chứa các tệp nhị phân do người dùng cài đặt.

Lưu ý: Giải thích tương tự áp dụng cho /usr/lib so với /usr/local/lib.

+0

Cảm ơn rất nhiều. Trên thực tế, tôi đã chỉnh sửa câu hỏi - liệu bạn có thể trả lời thêm một chút sau đó không? – Bruce

+0

Chắc chắn. Tôi vừa cập nhật câu trả lời của mình. – Asaph

+1

Câu trả lời hay. Cảm ơn đã giúp đỡ! – Bruce

Các vấn đề liên quan