Can $ PAGER contém espaços?

1

Estou escrevendo um aplicativo do qual quero executar um pager especificado pelo usuário. A maneira padrão de fazer isso parece ser a variável de ambiente PAGER .

Não estou claro se este é um nome de programa ou um nome de programa junto com argumentos. Eu tentei encontrar padrões mencionando isso, mas não consegui.

Minha intuição é que eu deveria dividir em espaços e executar. Estou correcto? Eu vi vários programas que assumem que variáveis de ambiente como $PAGER e $EDITOR são nomes de programas sem variáveis de ambiente.

Talvez eu deva executar com sh embora?

Links

por Att Righ 28.11.2017 / 23:58

1 resposta

3

My gut feeling is that I should split on spaces and execute.

Bons instintos. Você está chamando exec (3); cabe a você como interpretar as variáveis de ambiente que você suporta. Ao suportar as opções, você salva o usuário do problema de escrever um script para inseri-las em um único nome $ PAGER.

Um bom exemplo a seguir pode ser man (1). No meu sistema, ele suporta MANPAGER, que diz:

If MANPAGER is set, its value is used as the name of the program to use to display the man page. If not, then PAGER is used. If that has no value either, /usr/bin/less -is is used.

Isso, pelo menos, implica que PAGER pode conter opções. Você pode experimentar com o seu para ver. Eu aposto que sim.

Eu não acho que o Posix aborde a questão de como as variáveis de ambiente que denotam utilitários são interpretadas. Eu acho que o melhor que você tem é exemplos comuns de arte prévia.

Quanto a passar ou não pelo shell "the", eu diria Não, a menos que você queira aproveitar a expansão de variável do shell e documentá-lo. É mais simples e mais previsível manter o shell fora disso.

    
por 29.11.2017 / 02:16