Когда вы набираете ./configure
, он запускает исполняемый скрипт в текущем каталоге (помеченный .
) с именем configure
.
Make - это исполняемый файл, обычно расположенный где-то вроде /usr/bin
, который использует файл в каталоге для запуска набора команд в зависимости от того, обновлены ли файлы.
Когда вы просто набираете make
, ваша оболочка (программа, которая обрабатывает все ваши команды и отправляет их вывод на терминал) будет просматривать все каталоги в переменной среды PATH
, чтобы найти исполняемый файл с именем make
и запустите первый найденный файл. Но когда вы набираете ./make
, вы фактически указываете ему попробовать запустить исполняемый файл в текущем каталоге, который называется make
. (Он использует этот подход, а не ищет переменную PATH
всякий раз, когда вы вводите /
в команду.)
Вы можете использовать .
везде, где вы можете использовать обычный каталог для указания того же каталога, например: /usr/bin/././././
совпадает с: /usr/bin
. Аналогично, вы можете использовать ..
для указания каталога выше, поэтому /usr/bin/../bin/../bin/../lib
совпадает с /usr/lib
.
Итак, после запуска сценария configure
, расположенного в ./
, который генерирует так называемый make-файл, вы запускаете общесистемную версию make
, расположенную где угодно, просто набрав make
, которая использует make-файл для сборки пакета.
Кроме того, вы можете использовать команду which
, чтобы узнать, где будет выполняться команда, когда вы вводите команду самостоятельно - например, which make
.
(Извиняюсь, если что-то из этого снисходительно, я собирался завершиться. Кроме того, возможно, я злоупотребил тегами кода ...)