Demystifying the (Shebang): Kernel Adventures
a year ago
- #Shell Scripting
- #Linux
- #Kernel
- shebang(#!)用于指定执行脚本的解释器
- Linux内核(而非shell)负责处理shebang功能
- `execve`系统调用用于从文件启动程序运行
- 内核通过检查文件首行的shebang来确定解释器
- 若脚本缺少shebang,shell可能默认使用`/bin/sh`作为解释器
- `binfmt_misc`内核特性可通过匹配魔数字节或文件扩展名来调用非原生程序
- 内核在执行`execve`系统调用时会检查执行权限