我有一个关于shell解释器的问题,尽管我已经使用了很多年了。
在shell的开头,我们总是设置环境,然后是shell。以下是两个例子:
文件1:
#!/usr/bin/env bash
"bash shells"
文件2:
#!/usr/bin/env jruby
"ruby shells"
上述两个样本是否意味着两个脚本的解释器在开始时创建,然后两个解释器都执行以下脚本," Bash shell"和#34; Ruby shell"?
答案 0 :(得分:1)
来自Wikipedia:
在类Unix操作系统下,当一个带有 shebang 的脚本作为程序运行时,程序加载程序将脚本的初始行的其余部分解析为解释器指令;而是运行指定的解释器程序,将其作为参数传递给尝试运行脚本时最初使用的路径。例如,如果脚本以路径
path/to/script
命名,并且它以以下行开头:#!/bin/sh
然后指示程序加载器改为运行程序
/bin/sh
(通常这是Bourne shell或兼容shell),将path/to/script
作为第一个参数传递。
答案 1 :(得分:0)