Làm cách nào để chạy tệp .sh hoặc .command trong Terminal


87

Tôi luôn muốn có thể chạy một tập lệnh mà tôi đã tải xuống trực tuyến từ Finder nhưng chỉ cần nhấp đúp vào tệp không hoạt động.

Câu trả lời:


103

Mở Terminal, nhập sh /path/to/filevà nhấn enter.

Nhanh hơn là nhập shvà một khoảng trắng, sau đó kéo tệp vào cửa sổ và phát hành biểu tượng ở bất cứ đâu trên cửa sổ.


3
Bạn nghĩ điều gì sẽ xảy ra nếu tập lệnh shell được viết theo cú pháp của shell khác, chẳng hạn như tcsh, zsh hoặc ksh? Hậu tố shbiểu thị một tập lệnh shell không "chạy tập lệnh trong trình bao này".
fd0

3
@ fd0 Dòng shebang sẽ đảm nhận việc đó.
dùng14492

4
@ user14492- Khi bạn gọi một tập lệnh shell khi shell shell_scriptdòng shebang bị bỏ qua. Shell đọc dòng đầu tiên như một bình luận.
fd0

@ fd0, tôi không hiểu. Làm thế nào là sh /path/to/filebất kỳ ngữ nghĩa khác nhau từ thay thế /path/to/file.sh?
Pacerier

2
@ Pacerier- Ở dạng đầu tiên, người dùng yêu cầu phải có khả năng đọc tệp và chọn trình thông dịch nào sẽ đọc tệp. Ở dạng thứ hai, các quyền của tệp phải được đọc và thực thi cho người dùng gọi và trình thông dịch được xác định bởi hàm băm trên dòng đầu tiên của tập lệnh. Trong cả hai trường hợp, kernel không diễn giải hậu tố trên tệp.
fd0

12

Ngoài ra, bạn cũng có thể làm

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

Nó cũng sẽ chạy tệp thực thi với shell được chỉ định (nếu được chỉ định trong shebang #!/bin/(shell)


1
Trong câu hỏi có nội dung "chạy tập lệnh tôi đã tải xuống trực tuyến". Các tệp được tải xuống từ Internet thường có các quyền được đặt thành 644.
nohillside

@patrix Tôi nghĩ rằng đó không chỉ là internet, mà là mọi tệp được sao chép từ một hệ thống tệp khác vào của bạn vì mặt nạ mặc định trong tài khoản của bạn.
rwenz3l

9
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

chỉnh sửa ~/.bash_profilevà thêm dòng sau:

alias myfile=./myfile.sh

thực hiện dòng lệnh sau:

source ~/.bash_profile

sau đó bạn sẽ có thể chạy tệp của bạn dưới dạng một chương trình

$ myfile


trong Ubuntu, bất kỳ tập lệnh nào trong đường dẫn của bạn đều có thể được thực thi miễn là bạn có #~/bin/sh, trong khi trong OSXtập lệnh nên có .shphần mở rộng và một tập lệnh aliascho mỗi tập lệnh . : -O
Fabrizio Bertoglio

6

Thực hiện theo các bước sau để chạy các tệp script:

  1. Nhấp chuột phải vào tệp .sh.

  2. Di chuột qua Mở với .

  3. Chọn khác ... .

  4. Bạn nên ở trong thư mục Ứng dụng . Mở thư mục Tiện ích và chọn Terminal.app.

  5. Nếu bạn không thể chọn Terminal.app, hãy thay đổi các ứng dụng được bật từ Ứng dụng được đề xuất thành Tất cả ứng dụng . Nó ở dưới cùng của cửa sổ.

  6. Nếu bạn muốn mở mọi .shtệp bằng Terminal.app, đánh dấu Luôn mở bằng .

  7. Nhấn nút Open ở góc dưới bên phải của cửa sổ.


3

Lý do nó không hoạt động sau khi tải xuống là quyền truy cập tệp không cho phép. Để kích hoạt quyền thực thi, hãy mở Terminal và gõ chmod 755 /path/to/script. Thay vì nhập đường dẫn đầy đủ, bạn có thể kéo tập lệnh vào cửa sổ Terminal từ Finder. Sau đó, để thực thi, chỉ cần nhập /path/to/script. Một lần nữa, bạn có thể kéo và thả tệp vào cửa sổ Terminal. Cú pháp này sẽ thực thi tập lệnh bằng cách sử dụng shell đúng như được định nghĩa trên dòng đầu tiên của tập lệnh.


Tệp của tôi .sh mở trong trình soạn thảo văn bản tôi đã tạo tệp với. Làm thế nào tôi có thể mở nó trong Terminal thay thế? Tôi đã đặt quyền.
bart

@bart bạn cần thêm phần mở rộng .command để thực thi trực tiếp tập lệnh trong công cụ tìm.
rwenz3l
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.