答案1
你可以使用通用的binfmt杂项处理运行可执行文件时使用哪个解释器的内核模块。它通常用于允许您运行外部体系结构文件,而无需在它们前面添加qemu
或前缀wine
,但可用于识别任何魔法文件头中的字符序列,甚至是给定的文件扩展名,例如*.xslt
.查看内核文档。
例如,如果您有一个demo.xslt
以字符开头的文件
<xsl:stylesheet version=...
您可以要求模块识别<xsl:stylesheet
文件中偏移量 0 处的字符串,并/usr/bin/xsltproc
以 root 身份运行
colon=$(printf '\\x%02x' \':) # \x3a
echo ":myxsltscript:M::<xsl${colon}stylesheet::/usr/bin/xsltproc:" >/etc/binfmt.d/myxslt.conf
cat /etc/binfmt.d/myxslt.conf >/proc/sys/fs/binfmt_misc/register
您不需要查看该/etc
文件,除非您希望在重新启动时保留该设置。如果您没有该/proc
文件,则需要先安装它:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
现在,如果您chmod +x demo.xslt
可以demo.xslt
使用任何参数运行,它将使用作为额外的第一个参数提供的xsltproc
文件名运行。demo.xslt
要撤消设置,请使用
echo -1 >/proc/sys/fs/binfmt_misc/myxsltscript
答案2
无法使用 shebang 将 XSLT 样式表更改为可执行文件。