Я пишу приложение, из которого хочу запустить указанный пользователем пейджер. Стандартный способ сделать это, похоже, заключается в просмотре PAGER
переменной окружения.
Мне не ясно, является ли это именем программы или именем программы вместе с аргументами. Я пытался найти стандарты, упоминающие это, но не смог.
Мое внутреннее чувство подсказывает, что я должен разделить по пробелам и выполнить. Я прав? Я сталкивался с различными программами, которые предполагают переменные окружения, такие как $PAGER
и $EDITOR
являются именами программ без переменных окружения.
Может быть, мне стоит sh
вместо этого выполнить команду?
Ссылки
решение1
Мое внутреннее чувство подсказывает, что мне следует разделиться на зоны и выполнить.
Хорошие инстинкты. Ты звонишьисполнительный(3); вам решать, как интерпретировать переменные окружения, которые вы поддерживаете. Поддерживая опции, вы избавляете пользователя от необходимости писать скрипт, чтобы засунуть их в одно имя $PAGER.
Хорошим примером для подражания может бытьмужчина(1). В моей системе поддерживается MANPAGER, который говорит:
Если MANPAGER установлен, его значение используется как имя программы, используемой для отображения страницы руководства. Если нет, то используется PAGER. Если и у него нет значения,/usr/bin/less -isиспользуется.
Это по крайней мере подразумевает, что PAGER может содержать опции. Вы можете поэкспериментировать со своими, чтобы увидеть. Держу пари, что так и есть.
Я не думаю, что Posix решает вопрос о том, как интерпретируются переменные окружения, обозначающие утилиты. Я думаю, лучшее, что у вас есть, это общие примеры предшествующего искусства.
Что касается того, передавать ли его через "оболочку", я бы сказал "нет", если только вы не хотите воспользоваться расширением переменной оболочки и задокументировать это. Проще и предсказуемее держать оболочку в стороне.