Я пишу программу на C, которая выполняет несколько вызовов system () для выполнения других программ. При построении командной строки лучше явно указать полный путь к вызываемой программе или мне просто нужно дать имя исполняемого файла и позволить оболочке определить свое местоположение с помощью переменной среды PATH?
Все программы, которые я вызываю, являются частью одного пакета, и у меня есть путь к каталогу установки из определения препроцессора. Задание явного пути, по-видимому, позволит избежать ошибок, которые могут возникнуть, если несколько установленных программ имеют одно и то же имя. Однако это усложняет сборку командных строк, и все сломается, если пользователь переместит программы после установки.
Существует ли широко распространенная лучшая практика, касающаяся этого?
[Разъяснение]
Я использую autoconf / automake для генерации дистрибутива. Определение препроцессора, предоставляющее каталог установки, создается make-файлом. Он отражает выбранный пользователем каталог установки, как указано в строке configure comamnd или в командной строке make. Я действительно использую переменные окружения, чтобы указать расположение двоичных файлов. Это кажется ненужной болью в заднице, заставляющей пользователей перестраивать только для того, чтобы изменить местоположение двоичных файлов.