在sh
我遇到的脚本中,我发现了这些线条
#\
MAKE_LINTIAN_HAPPY '
接近开始.
从标识符的名称,很清楚它为什么被添加.但我的问题是:为什么这个合法的代码以及它做了什么(如果有的话)?
我问的原因是它使得GNU的源代码突出显示在这个脚本上无用,因为它会将tick后的所有文件解释为字符串.如果我知道为什么它是合法的,可能建议编辑语言定义文件来解决这个问题.
我试图在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"
Harald.. 5
您正在查看的脚本实际上不是shell(sh,bash,dash等)脚本,而是tclsh脚本.当你启动它时,事实上,/ bin/sh首先启动.它执行的第一个命令是
exec tclsh $0 -- "$@"
意思是它启动tclsh并将脚本文件传递给tclsh.现在tclsh开始解释脚本.它还有'#'作为行注释的开头,但与sh相反,如果行末尾被转义,则行注释可以扩展到下一行#\
.
所以该MAKE_LINTIAN_HAPPY
行不是tclsh的命令,它只是被忽略了.tclsh执行的第一个命令是set PROG_VERSION ...
.
我不知道林田.这一行可能正是让lintian"误解"文件内容只是文本的目的,因为否则它会认为它是一个sh脚本,并会对政策违规大声喊叫.
您正在查看的脚本实际上不是shell(sh,bash,dash等)脚本,而是tclsh脚本.当你启动它时,事实上,/ bin/sh首先启动.它执行的第一个命令是
exec tclsh $0 -- "$@"
意思是它启动tclsh并将脚本文件传递给tclsh.现在tclsh开始解释脚本.它还有'#'作为行注释的开头,但与sh相反,如果行末尾被转义,则行注释可以扩展到下一行#\
.
所以该MAKE_LINTIAN_HAPPY
行不是tclsh的命令,它只是被忽略了.tclsh执行的第一个命令是set PROG_VERSION ...
.
我不知道林田.这一行可能正是让lintian"误解"文件内容只是文本的目的,因为否则它会认为它是一个sh脚本,并会对政策违规大声喊叫.