Для повышения практичности программ, удобно оставить пользователю возможность
конфигурировать поведение программного обеспечения, например, используя макросы.
Для управления переменными и общими шаблонами, так как это делает оболочка,
предназначена мощная функция wordexp(). Вы должны быть осторожными
используя ее, так как передача строки типа $(command)
позволит выполнить указанную внешнюю команду. Передача строки
"$(/bin/sh)" создает Set-UID оболочку. Чтобы избежать этого,
wordexp() имеет атрибут WRDE_NOCMD, который запрещает
интерпретацию последовательности $( ).
При запуске внешних команд, вам надо быть осторожным и не вызывать утилиты,
которые предоставляют механизм выхода в оболочку (как последовательность
:!command в vi). Сложно перечислить их все, некоторые
приложения очевидны в этом смысле(текстовые редакторы, файл-менеджеры...),
другие сложнее определить (что мы видели с /bin/mail) или имеют
опасные режимы отладки.