Thêm một nhị phân vào đường dẫn của tôi


15

Tôi có một thực thi. Tôi muốn thực thi thực thi trong terminal với tên chỉ như các lệnh khác.

Tôi có thể đặt tệp thực thi của mình vào /usr/local/binhoặc tôi có thể thêm nó PATHvào ~/.bashrc. Cả hai sẽ làm việc.

Cái gì tốt hơn Có sự khác biệt nào không?

Câu trả lời:


12

Ví dụ, hãy để tôi giả sử, bạn có một thực thi myscript. Bạn cần chạy nó từ một thiết bị đầu cuối như,

/path/to/myscript

Thay đổi cấp độ người dùng

Nếu bạn thêm PATHtệp thực thi đó vào ~/.bashrc, bạn có thể chạy tệp thực thi chỉ với tên từ bất kỳ đâu ( Avinash Raj đã đề cập), như

myscript

Nhưng sự thay đổi sẽ bị ảnh hưởng ở cấp độ người dùng . Điều đó có nghĩa là nếu bạn có bất kỳ người dùng nào khác, họ không thể truy cập tệp thực thi chỉ bằng tên. Nếu họ có sự cho phép thích hợp, họ cần chạy chương trình thực thi như,

/path/to/myscript

Ngoài ra, bạn sẽ không thể chạy tập lệnh dưới dạng sudo vì nó không nằm trong PATHroot, Để chạy khi sudobạn cần sử dụng,

sudo /path/to/myscript

thay đổi cấp độ hệ thống

Nếu bạn đặt tập lệnh của mình vào /usr/local/binnó, nó có thể được truy cập trên toàn hệ thống và cho tất cả người dùng. Trong trường hợp đó, bất kỳ người dùng nào cũng có thể chạy tệp thực thi của bạn dưới dạng (có quyền truy cập phù hợp)

myscript

Trong trường hợp đó, bạn có thể chạy tệp thực thi sudocũng như,

sudo myscript

Bây giờ chọn một cách tùy thuộc vào nhu cầu của bạn.


2

Thêm vị trí của tệp vào $PATHbiến của bạn trong ~/.bashrctệp của bạn sẽ chỉ cho phép bạn thực thi từ bất kỳ vị trí nào, trong khi đặt nó vào /usr/bin/sẽ cho phép tất cả người dùng trên hệ thống của bạn thực thi tệp đó từ bất kỳ vị trí nào.

Tại sao vậy? Bởi vì, ~/.bashrctập tin của bạn chỉ hiển thị với bạn như một người dùng. Vì vậy, tất cả các thay đổi được thực hiện được giới hạn cho bạn. Trong khi đó, việc thêm tệp đó /usr/binsẽ cho phép tệp vẫn ở đó cho tất cả người dùng và vì /usr/bincó mặt trong $PATHbiến trừ khi có ai đó gỡ bỏ nó, sẽ cho phép tất cả người dùng thực thi nó từ bất kỳ vị trí nào.


1

Nếu bạn đặt tệp thực thi vào /usr/binhoặc /usr/local/bin, thì bạn sẽ có thể chạy chương trình đó bằng cách chỉ định tên ( your-programthay vì /usr/local/bin/your-program).

Thay vào đó, nếu bạn thêm thư mục chứa chương trình vào ~/.bashrctệp PATH, thì bất kỳ tệp thực thi nào có trong thư mục đó đều có thể được khởi chạy bằng cách chỉ gõ tên của nó.


1
Thông tin này là sai, bạn có thể khởi chạy chương trình thực thi ngay cả khi bạn không ở trong "thư mục đó".
Lekensteyn

Làm thế nào là sai?, Xin vui lòng giải thích thêm một chút.
Avinash Raj

1
Ok, tôi đã có một thời gian khó khăn để đọc câu trả lời của bạn (và do đó đã gây ra lỗi) vì vậy tôi đã chỉnh sửa nó để loại bỏ sự nhầm lẫn và từ chối downvote. Hy vọng nó sẽ giúp.
Lekensteyn

Vì vậy, câu hỏi là: cái gì tốt hơn? Có sự khác biệt nào không? Bạn thực tế đã không nói gì hơn OP.
Radu Rădeanu

Tôi đã trả lời cho câu hỏi của HĐH nhưng không phải ở dạng ngắn gọn.
Avinash Raj

0

Chỉ là phần bổ sung cho câu trả lời @souravc ...

Đối với "Thay đổi cấp độ người dùng", thay vì chỉnh sửa ~/.bashrctệp, bạn chỉ cần tạo thư mục $HOME/bin/và đặt các tập lệnh của mình vào đó.

Thư mục sẽ được tự động thêm vào PATH(ít nhất là từ Ubuntu 12.04), điều đó có nghĩa là bạn sẽ có thể chạy tất cả các tập lệnh / tệp thực thi bên trong thư mục đó một cách đơn giản:

myscript

Chỉ 2 xu của tôi. :)

Tái bút - Tôi đã cố đăng bài này dưới dạng bình luận cho câu trả lời của @souravc, nhưng tôi không có đủ danh tiếng. :-(

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.