Đâu là nơi tốt để cài đặt các tập lệnh bash tùy chỉnh?


32

Tôi sắp cài đặt "leiningen", đây là một tập lệnh bash cho ngôn ngữ lập trình clojure với rất nhiều tính hữu dụng ... nhưng tôi không chắc nơi nào phù hợp để - thông báo một tập lệnh thực thi trong linux hệ thống sao cho nó vĩnh viễn và ổn định-ly có sẵn.

Tôi không nghĩ rằng bất cứ nơi nào trong / nhà có ý nghĩa, nhưng tôi không biết thư mục / thư mục nào được cho là sẽ được sử dụng cho việc đó.

/ usr / chia sẻ?


Câu trả lời:


45

(Lưu ý: ~dịch như /home/usertrong bài này)

Cá nhân, tôi đặt tất cả các tập lệnh hệ thống tùy chỉnh của tôi vào /usr/local/binvà tất cả các tập lệnh bash cá nhân của tôi vào ~/bin. Rất ít chương trình tôi tự cài đặt vào /usr/local/binthư mục để nó không bị lộn xộn và nó đã có sẵn trong $PATHhầu hết các máy của tôi.

Để thêm /usr/local/binvào đường dẫn hệ thống của bạn (nếu nó chưa có), hãy thêm nó vào /etc/profile:

PATH=$PATH:/usr/local/bin
export PATH

Để thêm ~/binvào đường dẫn người dùng của bạn, hãy thêm nó vào ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Đôi khi, .bash_profiletệp mặc định sẽ có một câu lệnh if tự động thêm ~/binvào $PATHnếu nó tồn tại, vì vậy hãy tạo ~/binvà mở một thiết bị đầu cuối mới để xem nếu bạn đã làm điều này.


Các BSD làm điều này theo mặc định.
Chris S

@Chris: BSD đặt rất nhiều thứ vào / usr / local / bin
Dan Andreatta

Sự khác biệt giữa tập lệnh bash của bạn và tập lệnh hệ thống là gì và có lý do gì để bạn tách hai tập lệnh này không?
Hashim

@Hashim Tôi không thể nói cho Trey tất nhiên, nhưng các công cụ bạn phát triển cho nhu cầu cá nhân của bạn có xu hướng "tốt nghiệp" cho các công cụ hệ thống khi bạn nhận thấy chúng giải quyết vấn đề mà người khác đang đấu tranh hoặc bạn có cài đặt toàn hệ thống khác phụ thuộc vào trên một trong những công cụ này. Tôi nghi ngờ ngưỡng để cài đặt một cái gì đó trên toàn hệ thống là khá cao đối với hầu hết các lập trình viên. Ngoài ra, một công cụ bạn chia sẻ cần phải có tài liệu vv mà nhiều nhà phát triển hiếm khi viết khác.
tripleee

Bên cạnh đó, không cần phải exportthay đổi nhiều lần (và có lẽ hệ thống của bạn đã được đánh dấu PATHđể xuất, vì vậy bạn hoàn toàn không phải tự làm điều đó).
tripleee

9

/ usr / local / thực sự là nơi thích hợp, trong khi / opt thực sự dành cho các ứng dụng của bên thứ ba; "/ opt được dành riêng cho việc cài đặt các gói phần mềm ứng dụng bổ trợ." Đây là một phần của Tiêu chuẩn phân cấp hệ thống tập tin.

Xem http://www.pathname.com/fhs/pub/fhs-2.3.html để thảo luận về / opt.

Đối với / usr / local /, nó dành cho "sử dụng bởi quản trị viên hệ thống". Đừng quên những thứ trong đó - hãy ghi lại.


Liên kết mà bạn cung cấp cho biết "Các thư mục / opt / bin, / opt / doc, / opt / include, / opt / information, / opt / lib và / opt / man được dành riêng cho sử dụng của quản trị viên hệ thống cục bộ." Không có gì về / usr / địa phương. Chỉ / usr / local / share được đề cập ở đó. Mặt khác, các chương trình được biên dịch thường được cài đặt vào / usr / local trên Linux. Bạn không nghĩ / opt / bin là nơi tốt hơn để quản trị viên hệ thống sử dụng?
raacer

1
@raacer Kinh nghiệm của tôi là /usr/local- giống như tên của nó - dành cho quản trị viên cục bộ và /optcho những thứ không được phân phối chính thức, như phần mềm của bên thứ ba thương mại được quản lý bởi một quy trình tương tự (có thể được thay thế hoặc xóa sạch trong bản nâng cấp từ ngược dòng) nhưng không được quản lý bởi người quản lý gói của distro, hoặc có thể thực sự được phân phối dưới dạng RPM hoặc .debcác gói, nhưng không được tổ chức và đóng gói tuân thủ tất cả các chính sách và quy ước của distro.
tripleee

1
@raacer Có một phần riêng biệt hoàn toàn về /usr/localsau trong tài liệu.
tripleee

@raacer tripleee là đúng. Đây là liên kết: pathname.com/fhs/pub/ trên .. chính xác, các chương trình được biên dịch (thường là nguồn mở) được biên dịch / xây dựng riêng cho hệ thống đó hoặc được chia sẻ giữa một số hệ thống (nhưng không phải là một phần của bao bì / phân phối hệ điều hành thông thường, nhưng điều đó phụ thuộc nhiều vào libs được chia sẻ) nên được cài đặt vào / usr / local (về cơ bản phản ánh thứ bậc của / usr). Phần mềm của bên thứ ba được biên dịch trên một hệ thống có thể khác với khả năng hỗ trợ thư viện của riêng họ (ví dụ: firefox, userify) nên đi vào / opt.
Jamieson Becker

3

Trong lịch sử, bạn sẽ sử dụng một cái gì đó như / opt. Bất cứ điều gì cũng được miễn là nó được cập nhật bằng $ PATH cho những người dùng được cho là có nó (do đó mọi thứ trong / nhà đều là một ý tưởng tồi).


2

/usr/share/clojurecó vẻ như là một nơi phổ biến để đặt các nhị phân và thư viện của clojure - tại sao tôi không biết, nó có vẻ tự nhiên /usr/local/share/clojure- vì vậy việc tạo một sitethư mục con theo điều này cho các tập lệnh bash này có vẻ tốt.

Điểm chung là nó có ý nghĩa hơn khi tổ chức các tập lệnh theo chức năng, không có tất cả các tập lệnh bash ở cùng một nơi.


1
Có một vài vấn đề sử dụng /usr/sharecho việc này. Trước hết sharecó nghĩa là các tệp độc lập về kiến ​​trúc (nghĩa là được chia sẻ trên các kiến ​​trúc). Vì lý do đó, các thư viện và các tệp thực thi không thuộc về một sharethư mục. Thứ hai, ngoại trừ từ /usr/localkhông có gì khác ngoài trình quản lý gói phân phối nên ghi vào /usr.
kasperd

2

/usr/local, Tôi tin rằng có một số nhầm lẫn về ý nghĩa của "địa phương".

Theo tôi hiểu, "cục bộ" không có nghĩa là "bắt nguồn từ / từ máy cục bộ" mà đơn giản hơn là "cụ thể cho máy cục bộ", có thể có hoặc không bắt nguồn từ / từ máy cục bộ.

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.