GNU/Linux >> Tutoriels Linux >  >> Linux

$pager peut-il contenir des espaces ?

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.


Linux
  1. Comment puis-je convertir des espaces en tabulations dans Vim ou Linux ?

  2. Pouvons-nous utiliser du code C en Python ?

  3. Comment un programme C peut-il interroger l'entrée de l'utilisateur tout en effectuant simultanément d'autres actions dans un environnement Linux ?

  4. Puis-je jouer à Dota 2 sous Linux ?

  5. Comment puis-je modifier le $PATH sous Linux ?

Les espaces vides/l'arrière-plan d'un terminal peuvent-ils être remplacés par un motif aléatoire (mais joli) de caractères Ascii ?

Le thème de couleur peut-il se lier à un tampon ?

Variables d'environnement Linux

Comment puis-je utiliser xargs pour copier des fichiers contenant des espaces et des guillemets dans leurs noms ?

Puis-je exécuter un script dans une configuration d'exécution Eclipse ?

Comment puis-je surveiller le disque io ?