bash 可以“获取”自定义解释器 shell 吗?

bash 可以“获取”自定义解释器 shell 吗?

众所周知,bash 将在 she-bang 行中使用非 bash 解释器执行“脚本”(例如“#! /bin/cat”)

但是,似乎行不通的是(至少第一次尝试时),使用源或点命令将这些自定义解释的脚本包含在适当的 bash 脚本中,例如

#! /bin/bash; echo these are the terms; source terms.cat

terms.cat解释器是#! /bin/cat

有没有人找到做类似事情的方法(或者确定无法做到?)

(请不要回答我如何解决这个牵强的例子;我知道如何解决;我的实际情况要复杂得多;这个例子只是传达了这个想法)

答案1

source命令明确用于加载脚本就好像它们是主脚本的一部分一样。可以将其视为 C#include或 PHP require()

这意味着该文件的内容也必须是有效的 bash 脚本。Bash 既不关心#!标头,也不要求内核关心它们;它只会直接读取文件并跳过它们,就像它们是常规注释一样。

换句话说,如果您希望 #! 行得到遵守,您的主脚本必须直接将该文件作为命令执行。

(或者告诉perl执行它。Perl 会尝试提供帮助并为您生成正确的解释器。)

相关内容