Ich schreibe eine Anwendung, von der aus ich einen benutzerdefinierten Pager ausführen möchte. Die Standardmethode hierfür scheint zu sein, die PAGER
Umgebungsvariable zu überprüfen.
Mir ist nicht klar, ob dies ein Programmname oder ein Programmname zusammen mit Argumenten ist. Ich habe versucht, Standards zu finden, in denen dies erwähnt wird, konnte dies jedoch nicht.
Mein Bauchgefühl sagt mir, dass ich bei Leerzeichen trennen und ausführen sollte. Habe ich Recht? Ich bin auf verschiedene Programme gestoßen, die Umgebungsvariablen annehmen, $PAGER
und $EDITOR
Programmnamen ohne Umgebungsvariablen sind.
Vielleicht sollte ich sh
stattdessen aber mit ausführen?
Links
Antwort1
Mein Bauchgefühl sagt mir, dass ich die Felder aufteilen und ausführen sollte.
Gute Instinkte. Du rufst anAusführung(3); es liegt an Ihnen, wie Sie die Umgebungsvariablen interpretieren, die Sie unterstützen. Indem Sie Optionen unterstützen, ersparen Sie dem Benutzer die Mühe, ein Skript zu schreiben, um sie in einen einzigen $PAGER-Namen zu packen.
Ein gutes Beispiel, dem man folgen könnte, wäreMann(1). Auf meinem System wird MANPAGER unterstützt, das sagt:
Wenn MANPAGER gesetzt ist, wird sein Wert als Name des Programms verwendet, das zur Anzeige der Manpage verwendet werden soll. Wenn nicht, wird PAGER verwendet. Wenn auch dieser Wert keinen Wert hat,/usr/bin/less -iswird eingesetzt.
Das impliziert zumindest, dass PAGER Optionen enthalten kann. Sie können mit Ihrem experimentieren, um es herauszufinden. Ich wette, das stimmt.
Ich glaube nicht, dass Posix die Frage behandelt, wie Umgebungsvariablen, die Dienstprogramme bezeichnen, interpretiert werden. Ich denke, das Beste, was Sie haben, sind gängige Beispiele aus dem Stand der Technik.
Zur Frage, ob es durch „die“ Shell geleitet werden soll oder nicht, würde ich Nein sagen, es sei denn, Sie möchten die Vorteile der Shell-Variablenerweiterung nutzen und dies dokumentieren. Es ist einfacher und vorhersehbarer, die Shell außen vor zu lassen.