我想将 Linux 系统的默认 EOL 从 \n 更改为 \r\n,而无需重新编译。有什么配置可以实现这一点(可能是语言环境)?
原因:我必须确保对于每个创建文件的用户,文件都将被正确格式化(而不强迫他使用 unix2dos 或其他东西)
答案1
我正在编辑我的答案以提供此摘要。我相信您的基本问题的直接答案是“不,这不是许多 Linux 系统普遍支持的选项”。以下是我更详细的解释。
我怀疑这是否能轻易做到。理论上,多个操作系统使用不同的换行符,正如维基百科:代表理论上,程序员在想要表示“换行符”(可能是旧 QNX 系统的记录分隔符,或 MS-DOS 的 \r\n)时不应引用 \n 或 \r\n。这样,如果有人(很快或将来)希望重新使用代码,他们只需更改一个变量即可。
实际上,许多程序员都以“硬编码”值而闻名。您可以使用“Linux from Scratch”,并根据自己的喜好自定义系统。我想,如果您修改了源代码,您就可以让系统的所有配置文件都使用您喜欢的换行符顺序。
但是,当用户希望使用特定的文本编辑器或特定的 Web 浏览器时会发生什么?您是否准备去“修复”您自己的 Google Chromium Web 浏览器源代码变体,以适应此更改?
正如你所看到的ChrisEdmonton 的评论,实施这一改变实际上并不寻常。这意味着,你很可能会发现,很多事情都无法很好地实现一个人实现这种灵活性的目标。所以你可能会遇到很多问题。我推测,在事情最初看起来还不错之后,你很可能会遇到很多问题。
就我个人而言,我的计算机数据对我而言具有一定的价值。即使是那些毫无价值以至于我懒得备份的数据,对我来说也具有足够的价值,以至于我不想故意做一些可能导致问题的事情。(仅仅因为我愿意在发生灾难的不太可能发生的情况下让数据丢失,并不意味着我想把汽油倒在房子一侧的地板上,毫无意义地故意造成可能引发灾难的情况。)
因此,除非您愿意考虑各种因素,包括文件系统驱动程序和处理内存的内核代码以及系统的所有其他方面,否则这可能不值得追求。我建议使用另一种方式来实现更改。
是的,我知道 Linux 应该是开源的,所以它应该是可定制的。但现实情况是,Linux 已经发展得如此之快,以至于做出改变可能会产生重大后果。请记住,Linux 有不同版本(Debian、Ubuntu、Mint、Red Hat、SUSE 等),更不用说其他类 Unix 操作系统(BSD、Solaris、Mac OS X)和其他操作系统(Windows、DOS、CPM、VMS)。理论上,做出这样的改变应该比试图说服微软改变他们的闭源操作系统更容易。实际上,您可能需要说服很多人才能对一些比较流行的软件进行更改。做出改变可能会破坏一些东西,因此当有重大、实质性的好处时,应该做出改变。更无聊的改变不太可能值得他们付出可能实现的困难。
有些人可能希望将此类更改变成易于修改的选项。选项过多的一个问题是,选项过多会使用户界面变得混乱,会使文档变得混乱,并使源代码变得复杂(即使增加的复杂性相当小),因此有些人提倡创建标准并减少选项,以简化操作。因此,像“为支持此选项的软件自定义换行符”这样的更改可能会带来比预期收益更多的麻烦。
您给出的理由是不希望用户在创建文件时使用“unix2dos”。用户如何创建文件?用户是否运行“nano”?您可以用脚本替换“nano”,该脚本运行正常的 nano,然后自动运行 unix2dos。您可以修改用户创建/编辑文件的过程,或者您可以修改影响文件如何传输到可能需要 \r\n 的其他计算机的过程(然后不关心文件是否在 Linux 计算机上仅使用 \n)。与试图进行影响整个系统运作方式的系统范围的更改相比,这种有针对性的方法更有可能奏效,而不会产生意想不到的后果。