Использование абсолютного пути к команде - PullRequest
0 голосов
/ 30 мая 2018

Я пишу команду, которая использует переменную окружения CC.Если установлено CC, моя команда выполняет системный вызов $CC, в противном случае используется cc.При вызове cc я должен использовать /usr/bin/cc или просто cc?Могу ли я даже полагаться на cc, существующий в /usr/bin?Поскольку пользователь может установить CC для любой строки, я думаю, что использование пути к cc не обеспечивает дополнительной безопасности.

1 Ответ

0 голосов
/ 31 мая 2018

cc не является частью стандарта POSIX, поэтому вы не можете указать для него какое-либо конкретное местоположение.(Действительно, то же самое верно для любой команды ; для этого PATH.) У вашего сценария есть одно задокументированное требование, заключающееся в том, что он может выполнить некоторую команду для компиляции кода.

  1. По умолчанию эта команда cc.
  2. Вы можете изменить PATH, чтобы повлиять на то, какой cc будет использоваться.
  3. Вы можете установить CCбыть более конкретным;это может быть другое имя команды, относительный путь или абсолютный путь.

Обратите внимание, что CC и PATH не являются взаимоисключающими.Если для CC задан абсолютный путь, он будет использоваться.Если вы просто используете что-то вроде CC=gcc, то значение PATH может определить, какая из нескольких установленных версий gcc используется.

...