Câu trả lời:
$prompt: /path/to/script
và nhấn enter. Lưu ý rằng bạn cần đảm bảo rằng tập lệnh có quyền thực thi.
/path/to
thư mục, ví dụ như với các cd /path/to
lệnh, bạn có thể nhập ./script
để chạy script.Don't bạn quên, trong trường hợp này './' trước khi 'kịch bản'
Tuy nhiên, một cách khác để thực thi nó (lần này mà không cần thiết lập quyền thực thi):
bash /path/to/scriptname
cd vào thư mục có chứa tập lệnh hoặc đặt nó vào thư mục bin nằm trong $ PATH của bạn
sau đó gõ
./scriptname.sh
nếu trong cùng một thư mục hoặc
scriptname.sh
nếu nó nằm trong thư mục bin.
./scriptname.sh
làm việc cho tôi nhưng scriptname.sh
cho scriptname.sh: command not found
. -rwxr-xr-x
là các quyền của nó.
cd
bất cứ nơi nào có thể gây ra một hiểu lầm phổ biến cho người mới bắt đầu. Trừ khi nội bộ tập lệnh có các thành phần phụ thuộc yêu cầu nó chạy trong một thư mục cụ thể (chẳng hạn như cần đọc một tệp dữ liệu mà tập lệnh không thể giải thích một cách khó hiểu là không cung cấp tùy chọn để trỏ đến), bạn sẽ không bao giờ cần phải cd
chạy nó ở bất kỳ đâu và rất thường sẽ không muốn.
Bạn có thể làm:
sh scriptname.sh
sh
là một liên kết tượng trưng bash
hoặc nếu tập lệnh không sử dụng bất kỳ cấu trúc dành riêng cho Bash nào. Trong trường hợp trước đây, sử dụng bash
thay thế sh
là giải pháp di động, chính xác duy nhất; trong trường hợp thứ hai, nó không phải là câu trả lời chính xác cho câu hỏi cụ thể này, bởi vì OP đã hỏi về lời khuyên cụ thể cho một tập lệnh Bash. Cho câu trả lời sai là vô trách nhiệm; những người dùng không nắm bắt được sự khác biệt thường đăng ở đây và cần được chỉ ra tại sao câu trả lời "phù hợp với tôi" này không phù hợp với họ.
Thứ nhất bạn phải làm cho nó thực thi sử dụng: chmod +x name_of_your_file_script
.
Sau khi bạn thực thi nó, bạn có thể chạy nó bằng cách sử dụng ./same_name_of_your_file_script
Thay đổi thư mục của bạn thành nơi đặt tập lệnh bằng cách sử dụng lệnh cd
Sau đó gõ
bash program-name.sh
cd
đâu cả; bạn có thể chỉ định một tên đường dẫn phức tạp tùy ý làm đối số cho bash
; thực sự, bất kỳ chương trình nào có đối số tên tệp đều hoạt động theo cách này (hoặc thật đáng kinh ngạc, tê liệt).
Đây là một chủ đề cũ, nhưng tôi đã tình cờ xem qua nó và tôi ngạc nhiên là chưa ai đưa ra câu trả lời hoàn chỉnh. Vì vậy, đây là ...
Q: Làm cách nào để thực hiện điều này trong Terminal?
Xung đột và Xung đột:
sudo
phải làm bất kỳ điều này. Lệnh này được dành riêng để chạy lệnh với tư cách người dùng khác hoặc người dùng 'root' (quản trị viên). Bài viết tuyệt vời ở đây .(Một người mới học cách thực thi các tập lệnh không nên sử dụng lệnh này trừ khi có nhu cầu thực sự, chẳng hạn như cài đặt một chương trình mới. Một nơi tốt để đặt các tập lệnh của bạn là trong thư mục ~ / bin. Bạn có thể đến đó bằng cách nhập cd ~/bin
hoặc cd $HOME/bin
từ lời nhắc đầu cuối. Bạn sẽ có toàn quyền trong thư mục đó.)
Để "thực thi tập lệnh này" từ thiết bị đầu cuối trên hệ thống loại Unix / Linux, bạn phải thực hiện ba việc:
Cho hệ thống biết vị trí của script. (chọn một)
/path/to/script.sh
:). Bạn có thể xác minh đường dẫn đầy đủ bằng cách nhập pwd
hoặc echo $PWD
trong thiết bị đầu cuối../
cho đường dẫn (ví dụ ./script.sh
). Dễ dàng.PATH
và chỉ cần nhập tên (ví dụ script.sh
). Bạn có thể xác minh hệ thống PATH
bằng cách nhập echo $PATH
hoặc echo -e ${PATH//:/\\n}
nếu bạn muốn một danh sách gọn gàng hơn.Cho hệ thống biết rằng tập lệnh có quyền thực thi. (chọn một)
chmod +x /path/to/script.sh
vào thiết bị đầu cuối.chmod 755 /path/to/script.sh
nếu bạn thích số. Có một cuộc thảo luận tuyệt vời với một biểu đồ thú vị ở đây .Cho hệ thống biết loại tập lệnh. (chọn một)
BASH /path/to/script.sh
hoặc PHP /path/to/script.php
) Nếu tập lệnh có phần mở rộng, chẳng hạn như .php hoặc .py, thì nó là một phần của tên tập lệnh và bạn phải bao gồm nó.#!/bin/bash
) trong ví dụ của bạn. Nếu bạn có đó là dòng đầu tiên của tập lệnh, hệ thống sẽ sử dụng chương trình đó để thực thi tập lệnh. Không cần gõ chương trình hoặc sử dụng phần mở rộng.PATH
bằng cách sử dụng, #!/usr/bin/env
sau đó là tên chương trình (ví dụ #!/usr/bin/env bash
hoặc #!/usr/bin/env python3
). Có những ưu và khuyết điểm như được thảo luận kỹ lưỡng ở đây .script.sh
và đó script.php
là tên tệp theo nghĩa đen của các tập lệnh này và nếu bạn đặt phần mở rộng vào tên tệp, bạn cần bao gồm nó khi bạn chạy tập lệnh (và ngược lại; nếu tập lệnh không ' t có một phần mở rộng, không đặt một phần mở rộng). Điều này không giống như DOS, nơi bạn có thể bỏ qua .bat
hoặc .exe
từ tên tệp và các tệp cần có phần mở rộng từ một tập hợp nhỏ để được coi là có thể thực thi được.
Nếu bạn đang ở trong một thư mục hoặc thư mục có sẵn tệp script thì chỉ cần thay đổi quyền đối với tệp trong chế độ thực thi bằng cách
chmod +x your_filename.sh
Sau đó, bạn sẽ chạy tập lệnh bằng cách sử dụng lệnh sau.
$ sudo ./your_filename.sh
Phía trên "." đại diện cho thư mục hiện tại. Ghi chú! Nếu bạn không ở trong thư mục chứa tệp kịch bản bash thì bạn thay đổi thư mục chứa tệp bằng cách sử dụng
cd Directory_name/write the complete path
chỉ huy. Nếu không, tập lệnh của bạn không thể chạy.
sudo
là sai và có khả năng sai khủng khiếp nếu bạn sử dụng nó trên một tập lệnh không đáng tin cậy lạm dụng quyền hạn mà bạn không cần thiết cho nó.
cd
ở đâu đó thật khó hiểu, nhưng có lẽ cũng sai.
chmod +x scriptname
và sau đó./scriptname
.