it-swarm-vi.tech

Mac OS X: nơi thông thường nơi tệp nhị phân sẽ sống

Tôi đã tải xuống một ứng dụng là một ứng dụng dòng lệnh và muốn đặt nó ở một nơi mà tôi có thể chạy nó từ dòng lệnh mà không cần phải gõ đường dẫn một cách rõ ràng.

  1. Các đường dẫn thông thường được sử dụng cho một cái gì đó như thế này là gì? /usr/bin? Có các tùy chọn khác nhau, một nếu tôi muốn nó cho tất cả người dùng và một nếu tôi muốn nó chỉ cho một người dùng cụ thể, như tài khoản quản trị viên của tôi?

  2. Hoặc tôi nên đặt nó trong thư mục riêng của nó trong thư mục Ứng dụng và thêm nó vào đường dẫn? Nếu vậy, tập tin nào kiểm soát nơi đường dẫn được đặt?

55
Jason S

Câu trả lời cốt lõi: bạn có thể muốn /usr/local/bin. Tùy thuộc vào mức độ gần đây của macOS của bạn, bạn có thể cần cập nhật $PATH mặc định của mình. Xem bên dưới để biết thêm chi tiết.

CẬP NHẬT 12-01-2018 Tại một số thời điểm kể từ khi tôi viết câu trả lời ban đầu của mình, Apple đã thay đổi mặc định $PATH. Kết quả là, rất nhiều điều tôi nói dưới đây không liên quan đến các máy Mac gần đây. Nếu bạn nhập echo $PATH trong một thiết bị đầu cuối và /usr/local/bin là đầu tiên, thì bạn có thể bỏ qua mọi thứ bên dưới về việc thay đổi $PATH của bạn.

Câu trả lời gốc

Mac là bất thường về vấn đề này. Biến $PATH mặc định cho người dùng thông thường trông như thế này:

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

Bằng cách đặt /usr/local/bin sau /usr/bin/bin, Mac nâng cấp hệ thống thông thường. Thông thường, bạn có thể đặt một cái gì đó vào /usr/local/bin (giả sử một trình thông dịch Perl thứ hai, được biên dịch theo một số cách không chuẩn), và sau đó một người dùng thông thường sẽ nhấn tùy chỉnh trên toàn hệ thống trước tiên. Điều này là tốt Người dùng có thể nhận được các biến thể, nhưng hệ thống vẫn thuần túy. Tuy nhiên, với Apple_s mặc định $PATH, các mục trong /usr/bin hoặc /bin sẽ được tìm thấy trước mọi thứ trong /usr/local/bin. (Điều này về cơ bản đánh bại mục đích cài đặt, ví dụ: Perl tùy chỉnh trong /usr/local/bin.)

Để khắc phục điều này, bạn có thể thay đổi $PATH của người dùng thông thường bằng cách chỉnh sửa tệp .profile trong thư mục chính của người dùng. (Tệp đó có thể không tồn tại, nếu bạn có bản cài đặt hoàn toàn mới. Trong trường hợp đó, hãy tạo tệp đó.)

Liên quan đến bán: Homebrew cung cấp quản lý gói tuyệt vời cho máy Mac. Theo mặc định, Homebrew cài đặt phần mềm vào /usr/local, nhưng nó làm theo cách giúp bạn dễ dàng xóa mọi thứ và trở về trạng thái Vanilla sau đó.

47
Telemachus

/usr/local/bin/usr/local/sbin rất đáng để thêm vào đường dẫn của bạn, vì rất nhiều tệp tạo tệp cho các bản dựng nguồn được mặc định để cài đặt ở đó.

Nếu bạn sử dụng MacPorts , thì cũng đáng để thêm /opt/local/bin/opt/local/sbin.

Cách tốt nhất để làm điều này là thêm

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

vào tệp .bashrc trong thư mục chính của bạn (bị ẩn, vì vậy CLI là cách tốt nhất để thực hiện việc này) hoặc, nếu bạn muốn thay đổi đường dẫn rộng của hệ thống, hãy thêm cùng một dòng vào /etc/bashrc (không bị ẩn), nhưng bạn sẽ cần Sudo để làm điều này.

Nếu bạn không có .bashrc trong bất kỳ nhà nào của người dùng, bạn có thể tạo một và thêm dòng này vào nó, nhưng hãy nhớ thay đổi các quyền trên tệp bạn tạo để người dùng nghi ngờ (rõ ràng là không liên quan nếu bạn đang làm điều đó cho hồ sơ của riêng bạn).

$PATH ở cuối sẽ nối đường dẫn mặc định của hệ thống vào bất cứ thứ gì bạn đặt trước đó. Lưu ý rằng hệ thống tìm kiếm nhị phân theo thứ tự các đường dẫn đã cho, vì vậy nếu bạn cài đặt nhị phân trong /usr/local hoặc /opt/local cũng được cài đặt theo mặc định trên hệ thống, các phiên bản bạn cài đặt sẽ được tìm thấy trước, có thể (mặc dù hiếm khi) nhiều thứ. Đó là giá trị xem ra cho.

Thông tin tốt là ở đây .

Tôi nên lưu ý rằng các giả định ở trên bạn đang sử dụng Bash cho Shell, là mặc định trên Mac OS X v10.4 (Tiger) và Mac OS X v10.5 (Leopard), nhưng không phải trên các hệ thống trước đó, sử dụng tcsh thay vào đó, có một cú pháp khác.

Tôi hy vọng điều đó sẽ giúp ...

9
avstrallen

Tôi có xu hướng đi với /usr/local. Đây một lời giải thích hay tại sao , trong đó đề cập đến Tiêu chuẩn phân cấp hệ thống tập tin (FHS) . , Đến lượt nó nói về /usr/local:

Hệ thống phân cấp thứ ba cho dữ liệu cục bộ, cụ thể cho Máy chủ này. Thông thường có thêm các thư mục con, ví dụ: bin, lib, share.⁢

7
John Topley