如何强制emacs使用\n而不是\r\n

如何强制emacs使用\n而不是\r\n,emacs,shell,newline,Emacs,Shell,Newline,我必须使用windows来编写一些shell脚本。我决定使用emacs,但在运行脚本时出现了一个奇怪的错误: /bin/bash^M:解释器不好:没有这样的文件或目录 如果我错了,请纠正我,但看起来shebang的结尾是\r\n而不是\r\n。如何让emacs只写\n?我处于Shell脚本专业模式。令人惊讶的是,默认情况下这并不是固定的。使用: set-buffer-file-coding-system (应绑定到键序列)然后保存文件。正如Jürgen所提到的,您需要使用设置缓冲区文件编码系统

我必须使用windows来编写一些shell脚本。我决定使用emacs,但在运行脚本时出现了一个奇怪的错误:

/bin/bash^M:解释器不好:没有这样的文件或目录

如果我错了,请纠正我,但看起来shebang的结尾是\r\n而不是\r\n。如何让emacs只写\n?我处于Shell脚本专业模式。令人惊讶的是,默认情况下这并不是固定的。

使用:

set-buffer-file-coding-system

(应绑定到键序列)然后保存文件。

正如Jürgen所提到的,您需要使用
设置缓冲区文件编码系统。你可以说

(set-buffer-file-coding-system 'unix)
并将其粘贴到
查找文件挂钩
中的函数中,以便为您打开的所有缓冲区设置它。或者,您可以将其放入
写入文件挂钩
列表中,以便在将文件转储到磁盘之前正确设置文件编码系统


为了获得更简单的解决方法,如果您使用的是Emacs的GUI版本,您可以单击左侧模型行中的第三个字符。这是在eol格式之间切换

作为一种临时解决办法,大多数*nix系统都安装了
dos2unix
实用程序来转换线路端。是的,我现在正在使用它。你是如何在Windows下编写这些脚本,但使用bash运行它们的?我使用tramp的plink进入Linux框。