Làm thế nào để thực thi tập lệnh trong thư mục khác nhau?


51

Tôi đã thử nó

./home/user/scripts/someScript

nhưng nó không hoạt động

Không có tập tin hoặc thư mục

có ý kiến ​​gì không


2
Rõ ràng là không có một tập tin hoặc thư mục như vậy. Vì vậy, bạn đưa ra con đường sai. Dấu chấm ở đó không có nghĩa là "thực thi". Nó chỉ là một phần của con đường. Trong shell, bạn thường nhập các tệp sẽ được thực thi hoặc các lệnh (trong thực tế cũng là các tệp) :)
Pithikos

thoát khỏi giai đoạn bắt đầu đó và thử lại. Ngoài ra, ~ / scripts / someScript cũng sẽ hoạt động. cũng ghi nhớ `` qoutes và các chương trình exec ($ man exec)
j0h

Câu trả lời:


61

Dấu chấm hàng đầu trong lệnh của bạn có nghĩa là "liên quan đến thư mục hiện tại". Xóa nó và nó sẽ đề cập đến "tệp someScripttrong thư mục /home/user/scripts:

/home/user/scripts/someScript

Nếu bạn nhận được "Quyền bị từ chối", thì đó là do bạn không có đủ quyền truy cập tệp trong thư mục của người dùng khác hoặc do tệp không được thực thi. Để làm cho nó có thể thực thi được, hãy chạy:

chmod +x /home/user/scripts/someScript

35

Nếu tập lệnh của bạn cần truy cập tài nguyên trong cùng thư mục mà nó đang được chạy từ đó và bạn đã chỉ định nó là đường dẫn tương đối, thì tập lệnh của bạn sẽ bị hỏng.

Tôi luôn thêm một cd $(dirname $0)phần đầu vào tập lệnh của mình để thư mục chứa tập lệnh sẽ là thư mục gốc.


6

Gỡ bỏ .

Nếu bạn thực hiện thực thi scrip với chmod 755 <nameofscript>để chạy nó, bạn chỉ cần gõ đường dẫn đến kịch bản.

Khi bạn thấy ./scriptđang được sử dụng, nó báo cho shell biết rằng tập lệnh nằm trên cùng thư mục mà bạn đang thực thi nó. Để sử dụng đường dẫn đầy đủ, bạn gõ sh /home/user/scripts/someScript.


sh /path/to/filekhác với /path/to/file. shchạy /bin/shđược liên kết đến /bin/dash.
Lekensteyn

Chỉ cần làm cho một cái gì đó rõ ràng trên các ví dụ bạn nhìn thấy trên mạng, thông thường bạn sẽ thấy sh ./somescriptcái nào cũng có thể được gõ là 'sh / path / to / script / scriptitself'.
Bruno Pereira
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.