Câu trả lời:
$prompt: /path/to/scriptvà 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/tolệ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.shlàm việc cho tôi nhưng scriptname.shcho scriptname.sh: command not found. -rwxr-xr-xlà các quyền của nó.
cdbấ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 cdchạ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
shlà một liên kết tượng trưng bashhoặ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 bashthay thế shlà 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:
sudophả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 ~/binhoặc cd $HOME/bintừ 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 pwdhoặc echo $PWDtrong thiết bị đầu cuối../cho đường dẫn (ví dụ ./script.sh). Dễ dàng.PATHvà chỉ cần nhập tên (ví dụ script.sh). Bạn có thể xác minh hệ thống PATHbằng cách nhập echo $PATHhoặ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.shvào thiết bị đầu cuối.chmod 755 /path/to/script.shnế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.shhoặ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.PATHbằng cách sử dụng, #!/usr/bin/envsau đó là tên chương trình (ví dụ #!/usr/bin/env bashhoặ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.shvà đó script.phplà 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 .bathoặc .exetừ 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.
sudolà 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 scriptnamevà sau đó./scriptname.