Ссылки

Ссылки

Я пишу приложение, из которого хочу запустить указанный пользователем пейджер. Стандартный способ сделать это, похоже, заключается в просмотре PAGERпеременной окружения.

Мне не ясно, является ли это именем программы или именем программы вместе с аргументами. Я пытался найти стандарты, упоминающие это, но не смог.

Мое внутреннее чувство подсказывает, что я должен разделить по пробелам и выполнить. Я прав? Я сталкивался с различными программами, которые предполагают переменные окружения, такие как $PAGERи $EDITORявляются именами программ без переменных окружения.

Может быть, мне стоит shвместо этого выполнить команду?

Ссылки

решение1

Мое внутреннее чувство подсказывает, что мне следует разделиться на зоны и выполнить.

Хорошие инстинкты. Ты звонишьисполнительный(3); вам решать, как интерпретировать переменные окружения, которые вы поддерживаете. Поддерживая опции, вы избавляете пользователя от необходимости писать скрипт, чтобы засунуть их в одно имя $PAGER.

Хорошим примером для подражания может бытьмужчина(1). В моей системе поддерживается MANPAGER, который говорит:

Если MANPAGER установлен, его значение используется как имя программы, используемой для отображения страницы руководства. Если нет, то используется PAGER. Если и у него нет значения,/usr/bin/less -isиспользуется.

Это по крайней мере подразумевает, что PAGER может содержать опции. Вы можете поэкспериментировать со своими, чтобы увидеть. Держу пари, что так и есть.

Я не думаю, что Posix решает вопрос о том, как интерпретируются переменные окружения, обозначающие утилиты. Я думаю, лучшее, что у вас есть, это общие примеры предшествующего искусства.

Что касается того, передавать ли его через "оболочку", я бы сказал "нет", если только вы не хотите воспользоваться расширением переменной оболочки и задокументировать это. Проще и предсказуемее держать оболочку в стороне.

Связанный контент