Không tìm thấy lệnh nào khi chạy một kịch bản shell. Tôi đã làm gì?


8

Tôi đang trên OSX Snow Leopard.

Đây là nội dung đầy đủ của grr.sh:

#!/bin/sh

echo wow

Khi tôi cố chạy nó từ terminal:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

Được chứ. Đủ công bằng. Tôi sẽ cấp cho nó quyền thực thi, sau đó thử lại:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

Hừm. Có lẽ nó sẽ hoạt động nếu tôi sử dụng bash một cách rõ ràng? Tôi sẽ thay đổi nội dung của tệp thành:

#!/bin/bash

echo wow

Và tôi nhận được kết quả chính xác như vậy. Tôi có thể làm gì?

Một điều cuối cùng! Trong trường hợp bạn tò mò ...

$ which sh
/bin/sh

Câu trả lời:


19

Hoàn toàn không có gì. Chỉ các tệp thực thi trong một trong các thư mục trong $PATHcó thể được chạy trực tiếp và .(thường) không bao giờ trong $PATH. Chỉ định đường dẫn đến thực thi, nghĩa là ./grr.sh.


3
+1. Cũng cần lưu ý, thư mục hiện tại nằm trên đường dẫn trên các hệ thống Windows theo mặc định và được ưu tiên cao nhất. Sự khác biệt quan trọng này có lẽ là nguồn gốc của sự nhầm lẫn của người hỏi.
afrazier

Bạn là người đầu tiên sau 9 giây! Cảm ơn bạn!
Đóng Cowboy Cowboy

Bạn lưu macbook của tôi
vietnguyen09

7

Là vị trí của grr.sh trong $PATHbiến? Nếu không, bạn sẽ cần phải nhập:

./grr.sh

nếu bạn ở trong cùng thư mục với grr.sh. Nếu không, sau đó cung cấp đường dẫn đầy đủ đến nó.


6

các quyền cho tập tin là sai. Hãy thử các lệnh sau:

  $ chmod 777 file.sh
  $ ./file.sh

0

Vâng, và ý nghĩa của ./grr.sh là trong thư mục này, hãy chạy lệnh grr.sh. Người độc thân. có nghĩa là trong thư mục làm việc. Mặt khác, shell của bạn giả định rằng bạn đang cố chạy một lệnh trong $ PATH.

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.