Khi tôi viết các tập lệnh bash cho OS X của tôi để làm những điều chung, tôi tự hỏi đâu là nơi tốt để giữ chúng. Có thư mục nào tôi có thể đặt tất cả chúng vào nơi chúng sẽ được tự động nhặt không? Hoặc tôi nên tạo thư mục của riêng tôi và sau đó tham khảo thư mục này từ .profile hoặc một cái gì đó?Bạn giữ tập lệnh của riêng mình trên OSX ở đâu?
Trả lời
Thường là /usr/local/bin
, trừ khi bạn không muốn người dùng khác có quyền truy cập vào chúng, trong trường hợp này là $HOME/bin
.
Trong suy nghĩ của tôi, bạn có thể đặt tập lệnh của mình ở nơi bạn muốn. Nó không thực sự quan trọng trừ khi bạn sử dụng các thư mục specefic hệ thống. Tôi giữ cho tôi trong/scr với quyền root chỉ trên thư mục đó. Đó là conviniant bởi vì tất cả các kịch bản trong thư mục này cần truy cập root để thực hiện một cách chính xác và tôi không muốn người dùng cuối nhìn trộm vào thư mục đó.
Tôi đã PATH của tôi thiết lập như:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
$HOME/bin
Tôi sử dụng /usr/local/bin
cho các lệnh mà tôi có rằng ghi đè các lệnh mặc định. Ví dụ, tôi đã cài đặt Subversion 1.7.7 và OS X đi kèm với 1.6.18. Phiên bản 1.7.7 của svn
nằm trong số /usr/local/bin
trong khi phiên bản 1.6.18 mặc định của svn
nằm trong /usr/bin
. Khi tôi nhập svn
, tôi nhận được phiên bản mà tôi đã cài đặt thay vì phiên bản đi kèm với OS X. Tôi đã thực hiện việc này với Java, Git, Python và một số tệp nhị phân khác. Hầu hết trong số này là các liên kết tượng trưng. Ví dụ:
$ ls -l /usr/local/bin/ant
lrwxr-xr-x 1 root wheel 16 Jun 12 11:01 ant -> /opt/ant/bin/ant
1.9.1 Ant được cài đặt trong /opt/ant
(trên thực tế, /opt/apache-ant-1.9.1
, nhưng nó tượng trưng liên quan đến /opt/ant
). Tôi đã liên kết tất cả các nội dung theo số /opt/ant/bin
đến /usr/local/bin
, vì vậy nó nằm trong đường dẫn của tôi.
Tôi sử dụng $HOME/bin
cho tập lệnh shell cá nhân và các tập lệnh khác. Theo truyền thống, bạn làm cho mục nhập cuối cùng này trong PATH của bạn, vì vậy bạn không vô tình ghi đè một lệnh được xây dựng. Nếu tôi đã thực hiện lệnh shell script có tên là cp
, tôi sẽ không ghi đè lệnh /bin/cp
.
Tôi đặt '$ HOME/bin' ở phía trước đường dẫn để tôi có thể ghi đè lên các lựa chọn hệ thống (và tôi làm phức tạp đường dẫn của mình bằng cách có nhiều phiên bản Perl và GCC có sẵn trong các thư mục riêng biệt và mặc định là phiên bản mới nhất. sau $ HOME/bin), nhưng nếu không, tôi đi với một hệ thống tương tự như thế này. –
@JonathanLeffler Bạn nên xem [Perlbrew] (http://perlbrew.pl). Nó cho phép bạn dễ dàng chuyển đổi giữa các phiên bản khác nhau của Perl. Đối với những người khác, tôi đặt các tệp nhị phân vào trong '/ opt', sau đó liên kết. Ví dụ, tôi có '/ opt/apache-ant-1.9.1','/opt/apache-ant-1.8.1', '/ opt/apache-ant-1.7.1' Cái tôi muốn sử dụng, Tôi liên kết đến '/ opt/ant'. Sau đó, tôi sẽ liên kết các tệp nhị phân dưới '/ opt/ant/bin' thành'/usr/local/bin'. Để chuyển đổi các phiên bản, tôi chỉ thay đổi liên kết trong '/ opt' –
@JonathanLeffler Có một truyền thống để giữ' $ HOME/bin' ở cuối đường dẫn của bạn vì lý do _security_. Điều này đã trở lại trong những ngày khi mọi người ở trên cùng một hộp Unix. Nó có thể không áp dụng nhiều nữa. Tôi sử dụng '$ HOME/bin' chủ yếu cho các kịch bản lệnh shell và các kịch bản lệnh khác. Các tệp nhị phân được cài đặt ở nơi khác và được liên kết với '/ usr/local/bin' –
Tôi sử dụng ~/bin
để thực thi và tập lệnh tôi đã tự viết và /usr/local/bin
để thực thi và tập lệnh mà tôi không tự viết.
/usr/local/bin
được sử dụng bởi Homebrew, pip
(và gem
và npm
cài đặt bởi Homebrew), như là mục tiêu mặc định cho make install
, và bởi một số .pkg
trình cài đặt.
Tôi từng có một thư mục riêng cho các tập lệnh thực thi và tập lệnh mà tôi không tự viết và không được đặt trong /usr/local/bin
theo mặc định. Nhưng nó chứa rất ít tệp mà tôi đã chuyển tất cả các tệp trong đó sang /usr/local/bin
.
Tôi có thể tìm thấy nội dung không phải của Homebrew ở /usr/local/bin
với find /usr/local/bin ! -lname '../Cellar/*'
.
tôi không sử dụng /usr/local/bin
cho các kịch bản tôi đã viết bản thân mình, vì /usr/local/bin
đã chứa khoảng 1.000 tác phẩm khác, và ~/bin
(hoặc bin
) thường được dễ dàng hơn để gõ.
Tôi đã thêm setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
đến /etc/launchd.conf
. Có /usr/local/bin
trước khi các thư mục khác có khả năng nguy hiểm và ví dụ một số lệnh TextMate ngừng hoạt động vì nó, nhưng cũng thuận tiện để có các phiên bản lệnh mới hơn trước phiên bản được cài đặt hệ thống và sử dụng cùng một đường dẫn ở mọi nơi.
- 1. NInject: Bạn giữ tài liệu tham khảo của mình ở đâu trong hạt nhân?
- 2. MySQL ở đâu trên OSX ghi outfiles theo mặc định?
- 3. Tôi đặt tờ khai đại biểu C# của mình ở đâu trong một tệp của riêng mình?
- 4. config.log trên osx là gì và nó sống ở đâu?
- 5. Backbone.js: Tôi đặt thiết lập jQuery của mình ở đâu?
- 6. Tập tin .R ở đâu trên PC?
- 7. Giúp Indexer.app trên OSX Mountain Lion ở đâu?
- 8. Cách chạy tập lệnh trên gắn thiết bị trong OSX
- 9. Chạy Haddock trên riêng của mình
- 10. Bạn lưu trữ các cấu hình tập lệnh PHP của bạn như dữ liệu truy cập DB ở đâu?
- 11. Tôi nên đặt mocks của mình ở đâu?
- 12. Eclipse thêm build lệnh của riêng bạn
- 13. Bạn lấy bức ảnh ở đâu cho thiết kế của mình?
- 14. Đường dẫn SDK App Engine của Google trên OSX ở đâu?
- 15. Bạn lưu chuỗi muối ở đâu?
- 16. Bạn lưu trữ thư viện script PowerShell ở đâu?
- 17. Kohana - bạn đặt kịch bản AJAX ở đâu?
- 18. Trình đơn tập lệnh ở đâu trong Xcode 4?
- 19. bạn đặt ivysettings.xml ở đâu?
- 20. Bạn đặt task_id của nhiệm vụ cần tây ở đâu?
- 21. Ở đâu trên hệ thống tập tin nên một dịch vụ Windows lưu giữ dữ liệu của nó?
- 22. Tạo thư viện groovy của riêng mình
- 23. Shell của XAMPP ở đâu?
- 24. C#, Ninject: Bạn đặt hạt nhân và mô-đun của bạn ở đâu?
- 25. Tôi nên lưu trữ vĩnh viễn chức năng tùy chỉnh của mình ở đâu trong R?
- 26. Gcc trên OSX ở đâu? Tôi đã cài đặt Xcode đã
- 27. Tôi nên đặt mô-đun python của riêng mình ở đâu để nó có thể được nhập
- 28. Thay thế std :: async với phiên bản của riêng mình nhưng nên std :: lời hứa sống ở đâu?
- 29. Bạn kiểm tra nguyên mẫu của syscalls trên máy x86-64 ở đâu?
- 30. Tôi tìm lệnh MysqlDumpSlow ở đâu?
+1 Ngoài ra, '/ usr/local/bin' có thể mặc định là' PATH', nhưng '$ HOME/bin' gần như chắc chắn sẽ cần phải được thêm vào. – chepner
@chepner: vâng, đó là sự thật - tôi thường thêm '$ HOME/bin' vào' PATH' của tôi và sử dụng nó để thử nghiệm các tập lệnh và thực thi. –