解释器文件
所有的UNIX系统都支持解释器文件。这种文件是文本文件,起始形式是:1
#! pathname [optional-argument]
在感叹号和pathname之间的空格是可以选的。常见的解释器文件以下列行开始:1
! /bin/bash
pathname通常是绝对路径名,识别这种文件是exec
系统调用处理的一部分。内核使调用exec
函数的进程实际执行的并不是该解释器文件,而是在该解释器文件第一行中pathname指定的文件,即解释器。
解释器文件是文本文件,它以!#开头,而解释器是二进制文件,由解释器中的文件第一行的pathname指定。
解释器文件的好处
是否一定需要解释器文件呢?不完全如此,但是它们确实使得用户得到效率方面的好处,代价是内核的额外开销,因为识别解释器文件的是内核。由于下列原因,解释器文件是有用的:
- 有些程序是用某种脚本语言写的脚本,解释器文件可以将这一事实隐藏起来。
- 解释器脚本在效率方面提供了好处。
- 解释器脚本使我们可以使用除了/bin/sh以外的其他shell编写shell脚本。
参考文献
- 《APUE》第三版