Làm thế nào để tìm hiểu xem một tập lệnh shell được viết bằng bash hay sh


8

Làm thế nào tôi có thể tìm hiểu xem một kịch bản được viết bằng bashhoặc sh?

Dòng đầu tiên của tập lệnh không hữu ích ở đây, vì trên Linux, tập lệnh bash có dòng này: #!bin/sh

Trên thực tế, có nhiều bản phân phối /bin/shlà bash (có thể /bin/shlà một liên kết đến /bin/bashtrong các bản phân phối đó), chứ không phải Bourne Shell. Vì vậy, nếu tôi cố chạy một tập lệnh được viết bằng bash, ví dụ FreeBSD, kết quả không được xác định, vì /bin/shtrong FreeBSD là Bourne Shell, và không bash.

Có cách nào dễ dàng để xác định nếu một tập lệnh là bash hoặc sh?

Có một số điều đặc biệt trong cú pháp?


3
Xem Bashism trên Wiki của Greg ...
jasonwryan

Câu trả lời:


15

Trên thực tế, các dòng shebang có nghĩa là một số bản phân phối như Debian không sử dụng bashcho /bin/shnhưng dash.

Giải pháp đơn giản nhất để xác định xem tập lệnh shell có phải là bash hay không checkbashism- xem man checkbashismschi tiết.

checkbashismsnên được đóng gói bởi các bản phân phối khác nhau, đối với Debian, nó nằm trong devscriptsgói - Fedora in devscripts-minimal(trước đây là trong rpmdevtools) và OpenSuSe trongrpmlint-mini

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.