fstab 上的最后一个新行重要吗?

fstab 上的最后一个新行重要吗?

如果 fstab 的最后一行不是以换行符终止,会发生什么情况?

当最后一行没有以换行符结束时,为什么人们会收到警告?

答案1

行是由换行符终止的字符序列。文件最后一个换行符之后出现的字符不是行的一部分。

根据文本文件的 POSIX 定义,在最后一个换行符之后包含字符的此类文件不是文本文件,并且在这种情况下未指定文本实用程序的行为,并且在实践中,行为有所不同:

  • 有些完全忽略这些字符(跳过非终止行)
  • 有些人认为它是一行并保留换行符的缺失(例如 GNU sed
  • 有些人认为它是一行并添加回丢失的换行符(例如 GNU cut
  • 一些公用事业行为发生变化。就像read读取非终止行时返回非零退出状态一样。

因此,即使mount, swapon, fsck... 实用程序(通常读取 /etc/fstab 的实用程序)理解非终止行,处理该文件的某些脚本仍然可能会失败。您应该始终确保文本文件以换行符终止(除非它们为空)。文本编辑器应该默认这样做。通常,您需要费尽心思才能删除最后一个换行符。

相关内容