在脚本中,您必须在第一行包含 #!
,然后是将执行脚本的程序的路径(例如:sh、perl)。
据我所知, #
字符表示注释的开始,执行脚本的程序应该忽略该行。看起来,第一行在某个时候被某些东西读取,以便脚本由正确的程序执行。
有人可以更多地了解 #!
的工作原理吗?
我真的对此很好奇,所以答案越深入越好。
最佳答案
推荐阅读:
unix 内核的程序加载器负责执行此操作。当调用
exec()
时,它要求内核从文件中的参数加载程序。然后它将检查文件的前 16 位以查看它具有什么可执行格式。如果它发现这些位是 #!
,它将使用文件第一行的其余部分来查找它应该启动的程序,并提供它试图启动的文件的名称(脚本)作为最后一个参数解释器程序。然后解释器正常运行,并将
#!
视为注释行。关于shell - #! Shebang工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3009192/