Estou escrevendo um aplicativo a partir do qual desejo executar um pager especificado pelo usuário. A maneira padrão de fazer isso parece ser observar a PAGER
variável de ambiente.
Não estou certo se este é um nome de programa ou um nome de programa junto com argumentos. Tentei encontrar padrões mencionando isso, mas não consegui.
Meu pressentimento é que devo dividir os espaços e executar. Estou correcto? 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 with sh
em vez disso?
Ligações
Responder1
Meu pressentimento é que devo dividir os espaços e executar.
Bons instintos. Você está ligandoexecutivo(3); cabe a você interpretar as variáveis de ambiente que você suporta. Ao oferecer suporte a opções, você evita ao usuário o trabalho de escrever um script para colocá-las em um único nome $PAGER.
Um bom exemplo a seguir pode serhomem(1). No meu sistema, ele suporta MANPAGER, que diz:
Se MANPAGER estiver definido, seu valor será usado como o nome do programa a ser usado para exibir a página do manual. Caso contrário, PAGER será usado. Se isso também não tem valor,/usr/bin/menos -éé usado.
Isso pelo menos implica que PAGER pode conter opções. Você pode experimentar o seu para ver. Aposto que sim.
Não acho que o Posix resolva 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 passar ou não pelo "shell", eu diria Não, a menos que você queira aproveitar as vantagens da expansão de variáveis do shell e documentá-la. É mais simples e previsível manter a casca fora disso.