如果 fstab 的最后一行不是以换行符终止,会发生什么情况?
当最后一行没有以换行符结束时,为什么人们会收到警告?
答案1
行是由换行符终止的字符序列。文件最后一个换行符之后出现的字符不是行的一部分。
根据文本文件的 POSIX 定义,在最后一个换行符之后包含字符的此类文件不是文本文件,并且在这种情况下未指定文本实用程序的行为,并且在实践中,行为有所不同:
- 有些完全忽略这些字符(跳过非终止行)
- 有些人认为它是一行并保留换行符的缺失(例如 GNU
sed
) - 有些人认为它是一行并添加回丢失的换行符(例如 GNU
cut
) - 一些公用事业行为发生变化。就像
read
读取非终止行时返回非零退出状态一样。
因此,即使mount
, swapon
, fsck
... 实用程序(通常读取 /etc/fstab 的实用程序)理解非终止行,处理该文件的某些脚本仍然可能会失败。您应该始终确保文本文件以换行符终止(除非它们为空)。文本编辑器应该默认这样做。通常,您需要费尽心思才能删除最后一个换行符。