O sudo manipula documentadamente caracteres após barra invertida em todos os sistemas semelhantes ao UNIX? - para quebrar linhas longas

0

Em geral, você pode colocar um "\" no final do seu longo comando / linha para dividi-lo em várias linhas.

A sintaxe dos sudoers permite isso também, tudo bem.

Mas:

Se houver um ex .: "espaço" após o caractere "\", um comando / script será quebrado, mas o sudo não .

Pergunta : É oficial (e onde está documentado) que o sudo aceita espaços após "\" em todos os sistemas semelhantes ao UNIX?

Exemplo de comandos:

Backslashing normal:

$ echo a; \
> echo b
a
b

Um espaço foi colocado após a barra invertida:

$ echo a; \ 
a
bash:  : command not found
$ 
    
por LoukiosValentine79 29.05.2015 / 20:01

1 resposta

1

O comportamento depende do contexto porque o \ é manipulado por diferentes aplicativos.

O arquivo sudoers é um arquivo de configuração de sudo e, portanto, manipulado por um analisador em sudo . Portanto, depende da implementação de sudo , que pode variar de sistema para sistema. Por exemplo. de man sudoers no OSX:

Long lines can be continued with a backslash ('\') as the last character on the line.

O outro comportamento que você descreve é tratado por bash e documentado em man bash :

If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).

Outras camadas podem ter diferentes implementações.

    
por 29.05.2015 / 20:37

Tags