Là không gian được phép giữa #! và / bin / bash trong shebang?


48

Trong một shebang, một không gian hoặc nhiều hơn được phép giữa #!và thông dịch viên?

Ví dụ , #! /bin/bash. Có vẻ như công việc, nhưng một số người nói rằng nó không chính xác.



Vì vậy, một không gian là không cần thiết ? Tôi đã luôn nhìn thấy ít nhất một ...
Bakuriu

6
@Bakuriu ở đâu? Tôi gần như chưa bao giờ nhìn thấy một ...
Jens

Câu trả lời:


48

Vâng, điều này được cho phép.

Bài viết trên Wikipedia về shebang bao gồm một email năm 1980 từ Dennis Ritchie, khi anh giới thiệu hỗ trợ kernel cho shebang (như một phần của gói rộng hơn gọi là chỉ thị phiên dịch ) vào Phiên bản 8 Unix (nhấn mạnh của tôi):

Hệ thống đã được thay đổi để nếu một tệp được thực thi bắt đầu bằng các ký tự ma thuật #!, phần còn lại của dòng được hiểu là tên của trình thông dịch cho tệp được thực thi. [Càng]

Để tận dụng cơ hội tuyệt vời này, hãy đặt

#! /bin/sh

ở lề trái của dòng đầu tiên của tập lệnh shell của bạn. Khoảng trống sau !là OK.

Vì vậy, không gian sau khi shebang đã xuất hiện khá lâu, và thực sự, ví dụ của Dennis Ritchie đang sử dụng chúng.

Lưu ý rằng các phiên bản đầu tiên của Unix có giới hạn 16 ký tự trong dòng trình thông dịch này, vì vậy bạn không thể có một khoảng trắng tùy ý ở đó. Hạn chế này không còn được áp dụng trong các hạt nhân hiện đại.


38

Có, khoảng trống được cho phép sau #!. Thậm chí còn có một ý tưởng (nhầm lẫn) rằng một số hệ thống có thể yêu cầu nó, nhưng nó luôn luôn chỉ là tùy chọn.

Để đọc thêm hãy thử ở đây

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.