Tôi nên lưu trữ các ứng dụng dòng lệnh ở đâu?


46

Khi tôi tải xuống các ứng dụng dòng lệnh, chúng nằm trong ~/Downloads/thư mục của tôi . Nhưng tôi cảm thấy đây là vị trí sai khi đặt ứng dụng dòng lệnh. Tôi nên lưu trữ các ứng dụng dòng lệnh ở đâu trong hệ thống tệp Mac OS X?

/Applications/cũng cảm thấy sai, nó nhiều hơn cho các ứng dụng máy tính để bàn. Và /bin/âm thanh nhiều hơn cho các ứng dụng thuộc về OS X.


Tôi đồng ý với quan điểm của bạn rằng việc đưa mọi thứ trực tiếp vào / bin hoặc / Ứng dụng nói chung là hình thức kém. Câu trả lời của Patrix là vị trí chuẩn nhất mà tôi từng thấy để lưu trữ dòng lệnh và chương trình lệnh chung.
bmike


2
Tôi không thấy những điều này là trùng lặp vì câu hỏi được liên kết có vẻ nhiều hơn về việc đưa ra một số lựa chọn của bên thứ ba và đây là một cách thuần túy - ứng dụng được tải xuống thủ công của tôi sẽ đi đâu.
bmike

Câu trả lời:


44

Vì OS X xuất phát từ một di sản unix, bạn sẽ muốn lưu trữ các tệp hệ thống trong /usr/local/bincác ứng dụng và tập lệnh dòng lệnh thuộc về hệ thống cục bộ chứ không phải cho một người dùng cụ thể. Bạn có thể cần tạo thư mục này trước bằng cách chạy:

sudo mkdir -p /usr/local/bin

Bạn có thể di chuyển bất kỳ ứng dụng dòng lệnh nào vào thư mục đó bằng cách chạy:

sudo mv my-binary /usr/local/bin/

Để đảm bảo đó /usr/local/binlà một phần của đường dẫn tìm kiếm tiêu chuẩn của bạn trong Terminal, hãy kiểm tra nội dung /etc/pathsvà thêm nó nếu cần:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Một số người dùng tạo một thư mục thứ hai cho các tập lệnh cấp độ người dùng, nhưng điều này thậm chí còn tùy thuộc vào sở thích cá nhân.

Tôi thường tạo một thư mục bin trong mỗi thư mục người dùng và sau đó ẩn nó khỏi Finder - nhưng bạn có thể tự đưa ra quyết định cho dù bạn muốn ẩn nó:

 mkdir ~/bin
 chflags hidden ~/bin

Trong trường hợp này, bạn sẽ muốn mỗi đường dẫn của người dùng bao gồm vị trí này bằng cách sửa đổi tập lệnh khởi động shell ( ~/.bash_profileđối với bash là trình bao chuẩn)

 export PATH=$PATH:~/bin

hoặc bằng cách mã hóa cứng đường dẫn đến từng ứng dụng khi bạn chạy nó.


3
Đây hoàn toàn là gợi ý tốt nhất, và là gợi ý mà tôi sẽ đưa ra cho bất cứ ai hỏi. Tôi sẽ chỉ thêm 2 thứ: 1) /etc/launchd.conf cũng có thể là nơi cần thêm đường dẫn, 2) mặc dù tôi sử dụng / usr / local / cho các tiện ích Unix được cài đặt thông qua homebrewcác tập lệnh shell của riêng tôi có ~ / Dropbox / bin / mà tôi cũng đã thêm vào $ PATH của mình để tôi có tất cả các tập lệnh shell tùy chỉnh trên tất cả các máy Mac của mình. Nhưng tôi làm điều đó ngoài / usr / local / bin / chứ không phải thay vì nó.
TJ Luoma

/ usr / local / bin là điểm UNIX truyền thống cho các tập lệnh của người dùng, cho phép truy cập vào bất kỳ người dùng nào khác trên hệ thống. Đặt các tập lệnh ở đó sẽ đặt các tập lệnh trong tất cả $ PATH của người dùng một cách dễ dàng. Nhưng tôi tin theo cách của Mac , vì hầu hết các máy Mac đều có một người dùng, là tạo một ~/binthư mục, làm cho nó trở nên vô hình chflags uchg ~/binvà thêm nó vào người dùng ~/.bash_profileđể biến nó thành một phần của người dùng $ PATH. ~/binlà một vị trí cao cấp cho an ninh và di chuyển. Nếu không, bạn phải nhớ về những thứ bạn để lại trong / usr / local / bin. Và ln -s ~/bin ~/Dropbox/cũng tốt đẹp.
chillin

7

Xem xét việc tạo một /optthư mục, đó là một vị trí khác mà phần mềm Unix tùy chỉnh sẽ xuất hiện theo quy ước.


5
/opt/là rất hữu ích cho các ứng dụng hoàn chỉnh trong khi /usr/local/bin/thích hợp hơn cho các tập lệnh dòng lệnh độc lập. Nó thường được sử dụng /opt/trong các trường hợp trong đó một tập hợp các tập lệnh liên quan hoạt động như một thư viện (ví dụ /opt/myscriptslib/bin/:).
plasmid87

Thanx cho lời khuyên của bạn. Cá nhân tôi đã tạo thư mục / opt / để đặt phần mềm của mình và sau đó tôi chỉ tạo các liên kết tượng trưng đến / usr / local / bin cho tất cả các tệp thực thi ... sau đó không cần thêm / opt / myspecific-soft vào biến môi trường đường dẫn .
18 giờ 42 phút
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.