Ich schreibe eine Anwendung, von der aus ich einen benutzerdefinierten Pager ausführen möchte. Der Standardweg dafür scheint zu sein, sich den PAGER
anzusehen Umgebungsvariable.
Ich bin mir nicht sicher, ob dies ein Programmname oder ein Programmname zusammen mit Argumenten ist. Ich habe versucht, Standards zu finden, die dies erwähnen, konnte es aber nicht.
Mein Bauchgefühl ist, dass ich mich auf Räume aufteilen und ausführen sollte. Hab ich recht? Ich bin auf verschiedene Programme gestoßen, die Umgebungsvariablen wie $PAGER
annehmen und $EDITOR
sind Programmnamen ohne Umgebungsvariablen.
Vielleicht sollte ich mit sh
ausführen stattdessen aber?
Links
- Diese Frage behandelt die Quelle verschiedener gemeinsamer Umgebungsvariablen
Akzeptierte Antwort:
Mein Bauchgefühl ist, dass ich auf Leerzeichen aufteilen und ausführen sollte.
Gute Instinkte. Sie rufen exec an (3); Es liegt an Ihnen, wie Sie die von Ihnen unterstützten Umgebungsvariablen interpretieren. Indem Sie Optionen unterstützen, ersparen Sie dem Benutzer die Mühe, ein Skript zu schreiben, um sie in einen einzigen $PAGER-Namen zu stecken.
Ein gutes Beispiel könnte man sein (1). Auf meinem System unterstützt es MANPAGER, was besagt,
Wenn MANPAGER gesetzt ist, wird sein Wert als Name des Programms
verwendet, das zum Anzeigen der Manpage verwendet werden soll. Wenn nicht, wird PAGER verwendet. Wenn
das auch keinen Wert hat, /usr/bin/less -is verwendet wird.
Das impliziert zumindest, dass PAGER Optionen enthalten kann. Sie könnten mit Ihrem experimentieren, um es zu sehen. Ich wette, das tut es.
Ich glaube nicht, dass Posix die Frage anspricht, wie Umgebungsvariablen, die Dienstprogramme bezeichnen, interpretiert werden. Ich denke, das Beste, was Sie haben, sind allgemeine Beispiele für den Stand der Technik.
Zu der Frage, ob es durch „die“ Shell geleitet werden soll oder nicht, würde ich nein sagen, es sei denn, Sie möchten die Shell-Variablenerweiterung nutzen und dokumentieren. Es ist einfacher und berechenbarer, die Schale aus der Sache herauszuhalten.