Píšu aplikaci, ze které chci spouštět uživatelsky zadaný pager. Zdá se, že standardním způsobem, jak toho dosáhnout, je podívat se na PAGER
proměnná prostředí.
Není mi jasné, zda se jedná o název programu nebo název programu spolu s argumenty. Snažil jsem se najít normy, které to zmiňují, ale nepodařilo se to.
Můj vnitřní pocit je, že bych se měl rozdělit na mezery a provést. Mám pravdu? Narazil jsem na různé programy, které předpokládají proměnné prostředí jako $PAGER
a $EDITOR
jsou názvy programů bez proměnných prostředí.
Možná bych měl spustit pomocí sh
místo toho?
Odkazy
- Tato otázka pojednává o zdroji různých běžných proměnných prostředí
Přijatá odpověď:
Můj vnitřní pocit je, že bych se měl rozdělit na mezery a provést.
Dobré instinkty. Voláte exec (3); je na vás, jak interpretovat proměnné prostředí, které podporujete. Díky podpoře voleb ušetříte uživateli námahu s psaním skriptu, který je vloží do jediného názvu $PAGER.
Dobrým příkladem k následování může být člověk (1). V mém systému podporuje MANPAGER, což říká,
Pokud je nastaven MANPAGER, jeho hodnota se použije jako název programu
, který se použije k zobrazení manuálové stránky. Pokud ne, použije se PAGER. Pokud
ani toto nemá žádnou hodnotu, /usr/bin/less -is se používá.
To přinejmenším znamená, že PAGER může obsahovat volby. Můžete experimentovat s tím svým, abyste viděli. Vsadím se, že ano.
Nemyslím si, že Posix řeší otázku, jak jsou interpretovány proměnné prostředí, které označují nástroje. Myslím, že to nejlepší, co máte, jsou běžné příklady předchozího umění.
Pokud jde o to, zda to předat „the“ shellem, nebo ne, řekl bych Ne, pokud nechcete využít výhody expanze proměnné shellu a zdokumentovat to. Je jednodušší a předvídatelnější, aby se do toho nedostalo.