如果我运行以下命令:sudo -Eualice whoami
当标志和自变量之间没有空格时,命令如何接受用户自变量?我希望-Eualice
被解释为-E -u -a -l -i -c -e
。
sudo -Eualice
仅遵循Unix命令行的常规约定。如果选项采用选项参数(例如-u
选项采用username
选项参数),则选项参数可以用空格与选项字母分隔(如-u alice
中所示),或者它可以立即跟在选项字母后面,不带空格(例如-ualice
中的内容。)>
对于不带参数的选项也有类似的约定。不带参数的选项(在这种情况下,例如-E
)可以紧跟空格,或者紧随其后的是另一个选项,并且非空格序列可以继续多个选项。这就是让您执行ls -lsatr
之类的事情的方法,而不必键入ls -l -s -a -t -r
。
在您的示例中,您同时使用了这两个空白跳过变体。 -E
后面紧跟着u
选项,紧接着是u
的alice
选项参数。
没有其他选项,没有空格也不能跟随选项参数,因为那样会造成歧义,因此,如果要添加-P
选项,则必须编写:
sudo -Eualice -P whoami
或者您可以将
-P
写在-u
之前的位置:
sudo -EPualice whoami
比必须写起来更方便:
sudo -E -P -u alice whoami
但是,如果您是在其他人可能必须阅读该命令的环境中编写该命令(例如,在其他人将使用和维护的shell脚本中),那么您可能会决定使用较长的全空格分隔版本,因为它更易于阅读。