gpt4 book ai didi

linux - MAKE_LINTIAN_HAPPY 和 shell 脚本中的单引号有什么作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:11 25 4
gpt4 key购买 nike

在我遇到的 sh 脚本中,我找到了这些行

#\
MAKE_LINTIAN_HAPPY '

接近开始。

从标识符的名字就可以看出为什么加上了。但我的问题是:为什么这个 sh 代码是合法的,它有什么作用(如果有的话)?


我问的原因是它呈现 GNU's source-highlight在此脚本上无用,因为它将勾选后的所有文件解释为字符串。如果我知道为什么它是合法的,可能会建议对语言定义文件进行编辑以解决此问题。

我试图在 man 页面中搜索 sh 以寻找线索

$ man sh|grep "\W'\W"

但似乎没有匹配项有帮助(尽管有很多匹配项,所以如果有的话我可能会错过)。

我也不明白#\;我不知道这是否与这个问题无关。 (Vim 会将 #\ 之后的行语法着色为注释,但是一个简单的测试表明 sh 确实执行了 之后的行>#\.)

这是脚本开头的扩展摘录:

#!/bin/sh
# [...]
#\
exec tclsh $0 -- "$@"

#\
MAKE_LINTIAN_HAPPY '

set PROG_VERSION "v1.27 17/06/2005"

最佳答案

您正在查看的脚本实际上不是 shell(sh、bash、dash 等)脚本,而是 tclsh 脚本。当你启动它时,实际上,/bin/sh 是首先启动的。它执行的第一个命令是

exec tclsh $0 -- "$@"

意味着它启动 tclsh 并将脚本文件传递给 tclsh。现在 tclsh 开始解释脚本。它也有'#'作为行注释的开始,但与 sh 相比,行注释可以扩展到下一行,如果行尾被转义,因此 #\.

因此 MAKE_LINTIAN_HAPPY 行不是 tclsh 的命令,它只是被忽略了。 tclsh 执行的第一个命令是 set PROG_VERSION ...

我不认识林田。这一行的目的可能正是让 lintian 将文件的内容“误解”为纯文本,否则它会认为这是一个 sh 脚本,并且会大声提示违反政策。

关于linux - MAKE_LINTIAN_HAPPY 和 shell 脚本中的单引号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com