Làm thế nào để bạn bỏ qua ./iên khi chạy tập lệnh trên thư mục hiện tại


10

Trên một số hướng dẫn qua internet, họ có thể chạy một tập lệnh trên thư mục hiện tại mà không cần thực hiện:

./script

Làm thế nào để bạn bỏ qua điều này? Tôi đang sử dụng CentOS 5.6 x64. Tôi muốn chạy nó theo cách này

script


3
Lưu ý rằng điều này hầu như luôn luôn là một ý tưởng tồi, đặc biệt là đối với người dùng root.
David Schwartz

1
Toàn bộ mục đích / câu chuyện đằng sau ./ là gì?
Pete

Tôi chỉ tò mò tại sao nó luôn cần phải có ./
Aivan Monceller

Nhận xét cuối cùng có thể là một câu hỏi riêng IMHO - đó là một điều quan trọng để hiểu về việc chạy các chương trình nói chung!
rozcietrzewiacz

4
@Pete (và Aivan): Trong Linux / UNIX, shell chỉ chạy các chương trình nếu nó biết đường dẫn đến chúng (cho dù bằng cách sử dụng đường dẫn bạn chỉ định hoặc bằng cách tìm kiếm biến PATH). Nó không cho rằng bạn muốn tìm kiếm thư mục hiện tại giống như Windows. Nó tìm kiếm chính xác những gì bạn yêu cầu nó tìm kiếm thông qua biến PATH. '.' là một tham chiếu đến thư mục hiện tại. Vì vậy, khi bạn nhập './script.sh', bạn đang nói với nó đường dẫn.
Kasius

Câu trả lời:


26

Bất kỳ:

  1. Thêm thư mục làm việc hiện tại vào PATH của bạn: PATH=${PATH}:.(đây được coi là rủi ro bảo mật)
  2. Thêm một cách rõ ràng đường dẫn chứa tập lệnh của bạn vào biến PATH (điều này không có rủi ro bảo mật nếu quyền truy cập ghi vào thư mục đó bị hạn chế)
  3. Đặt tập lệnh của bạn vào đúng vị trí nơi PATH đã trỏ tới (~ / bin, / usr / local / bin, ...)

Tùy chọn cuối cùng có thể là tốt nhấ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.