我正在查看 Windows 计算机上的 hosts 文件,我注意到除了以 # 字符开头的明显注释外,它还包含以两个制表符(或在某些情况下以多个空格)开头的注释行,并且前面没有 # 或 IP 地址。这些“注释”紧跟在定义明确的注释行之后。例如:
# Obviously a comment line that starts with #
\t\t Is also a comment, but line starts with two tabs
\t\t Possibly is treated as a comment continuation??
从这Microsoft 页面上有关于 hosts 文件的内容:
Hosts 文件包含多行文本,第一个文本字段中有一个 IP 地址,后面跟着一个或多个主机名。每个字段之间用空格分隔(出于历史原因,通常首选制表符,但也使用空格)。可以包含注释行,注释行在行首位置用井号 (#) 表示。文件中的空白行将被忽略。
这意味着评论应该以 # 开头
维基百科页Hosts文件上的内容基本一致。
我的 hosts 文件格式是否错误(问题被忽略了)?或者是否存在某种神秘的格式,允许注释以不带前导 # 开头(可能是上一行注释延续格式)?
答案1
RFC 952:2. 续行是以至少一个空格开头的行。它们可用于任何“空格”合法的地方,以将条目拆分为多行。
如果文本位于条目之后,那么它就是别名的文本字符串。
您的文件格式是否错误?是的。您的系统是否“忽略”格式错误的行?也许,您可以检查别名。并在日志中查找消息。但“忽略”格式错误的数据是 unix 网络系统设计的一部分,这并不神秘:这就是系统的设计方式。