sudo 是否在所有类 UNIX 系统上处理反斜杠后的字符? - 用于打破长线

sudo 是否在所有类 UNIX 系统上处理反斜杠后的字符? - 用于打破长线

一般来说,您可以在长命令/行的末尾放置一个“\”,将其分成几行。

sudoers 语法也允许这样做,没关系。

但:

如果“\”字符后面有“空格”,命令/脚本就会中断,但 sudo 没有

问题: sudo 在所有类 UNIX 系统上接受“\”后面的空格是官方的吗(以及在哪里记录的)?

命令示例:

正常反斜杠:

$ echo a; \
> echo b
a
b

反斜杠后面加了一个空格:

$ echo a; \ 
a
bash:  : command not found
$ 

答案1

该行为取决于上下文,因为\由不同的应用程序处理。

sudoers 文件是sudo来自sudo.所以这取决于 的实施sudo,其中可能因系统而异。例如,来自man sudoersOSX:

长行可以用反斜杠('\')作为最后一个来继续 特点在线上。

您描述的其他行为由 处理bash并记录在man bash

如果\<newline>出现一对,并且反斜杠本身没有被引号引起来, \<newline> 则将其视为行延续(即,将其从输入流中删除并有效地忽略)。

其他 shell 可能有不同的实现。

相关内容