J'écris une application à partir de laquelle je veux exécuter un téléavertisseur spécifié par l'utilisateur. La façon standard de le faire semble être de regarder le PAGER
variable d'environnement.
Je ne sais pas s'il s'agit d'un nom de programme ou d'un nom de programme avec des arguments. J'ai essayé de trouver des normes mentionnant cela, mais je n'ai pas pu.
Mon instinct est que je devrais diviser les espaces et exécuter. Ai-je raison? J'ai rencontré divers programmes qui supposent des variables d'environnement comme $PAGER
et $EDITOR
sont des noms de programmes sans variables d'environnement.
Peut-être devrais-je exécuter avec sh
à la place ?
Liens
- Cette question traite de la source de diverses variables d'environnement courantes
Réponse acceptée :
Mon sentiment instinctif est que je devrais diviser les espaces et exécuter.
Bon instinct. Vous appelez exec (3); c'est à vous de décider comment interpréter les variables d'environnement que vous supportez. En prenant en charge les options, vous évitez à l'utilisateur d'écrire un script pour les insérer dans un seul nom $PAGER.
Un bon exemple à suivre pourrait être l'homme (1). Sur mon système, il prend en charge MANPAGER, qui dit,
Si MANPAGER est défini, sa valeur est utilisée comme nom du programme
à utiliser pour afficher la page de manuel. Sinon, PAGER est utilisé. Si
cela n'a pas de valeur non plus, /usr/bin/less -is est utilisé.
Cela implique au moins que PAGER peut contenir des options. Vous pourriez expérimenter avec le vôtre pour voir. Je parie que oui.
Je ne pense pas que Posix aborde la question de savoir comment les variables d'environnement qui dénotent les utilitaires sont interprétées. Je pense que le mieux que vous ayez, ce sont des exemples courants d'art antérieur.
Quant à savoir s'il faut ou non le faire passer par "le" shell, je dirais Non, à moins que vous ne vouliez tirer parti de l'expansion des variables du shell et le documenter. Il est plus simple et plus prévisible de garder la coquille à l'écart.