shebang line là gì?

Nếu bạn đã từng trải nghiệm unix/linux thì chắc hẳn đã quen với những file thực thi chứa 1 dòng đầu tiên có dạng “#!/usr/bin/env sh”. Dòng này chính là shebang line. Vậy shebang line có nghĩ gì?

Shebang line phải đặt ở đầu tiên của một file thực thi, nó có tác dụng xác định chương trình được chỉ định để chạy và các tham số truyền vào tiến trình. Shebang line có dạng như sau:

#!interpreter [arguments]
  • #! là ký tự bắt buộc bắt đầu shebang line.
  • interpreter là file thực thi. Chúng ta có thể dùng đường dẫn đầy đủ (/bin/sh, /bin/bash) hoặc dùng /usr/bin/env để tìm trong hệ thống.
  • arguments là những tham số (tùy chọn) thêm có thể truyền vào tiến trình.

Ví dụ:

#!/bin/sh
# Use shell to parse the file.

#!/usr/bin/env perl
# Use the env command to find the full path to the perl executable file.

#!/usr/bin/python
# Executes the file using the python binary.

#!/usr/bin/env node --name=QuynhNX --age=24
# Use the env command to find the full path to the node executable file and pass "--name=QuynhNX" to the process.

Demo

Tôi lấy file main.js từ bài viết argc và argv là gì? nhưng sẽ chạy những lệnh sau:

$ chmod +x main.js # Set executable mode for main.js file.
$ ./main.js # Same to "node main.js"
$ ./main.js --name=QuynhNX # Same to "node main.js --name=QuynhNX"