Estou escrevendo um aplicativo do qual desejo executar um pager especificado pelo usuário. A maneira padrão de fazer isso parece ser olhar para a PAGER
variável de ambiente.
Não estou claro se este é um nome de programa ou um nome de programa junto com argumentos. Tentei encontrar normas mencionando isso, mas não consegui.
Meu pressentimento é que devo dividir os espaços e executar. Estou correcto? Eu encontrei vários programas que assumem variáveis de ambiente como $PAGER
e $EDITOR
são nomes de programas sem variáveis de ambiente.
Talvez eu deva executar com sh
em vez disso?
Bons instintos. Você está chamando exec (3); cabe a você como interpretar as variáveis de ambiente que você suporta. Ao oferecer suporte a opções, você evita que o usuário precise escrever um script para colocá-las em um único nome $PAGER.
Um bom exemplo a seguir pode ser man (1). No meu sistema, ele oferece suporte ao MANPAGER, que diz:
Isso pelo menos implica que o PAGER pode conter opções. Você pode experimentar o seu para ver. Aposto que sim.
Não acho que o Posix aborde a questão de como as variáveis de ambiente que denotam utilitários são interpretadas. Acho que o melhor que você tem são exemplos comuns de arte anterior.
Quanto a passá-lo ou não pelo "shell", eu diria Não, a menos que você queira aproveitar a expansão variável do shell e documentá-lo. É mais simples e previsível manter a casca fora dele.