su -pgsql
изменяет пользователя на pgsql
И изменяет текущий рабочий каталог (cwd) на домашний каталог pgsql.
Затем вы выполнили команду pg_dump
в ~ pgsql /
, поэтому искомый файл будет в этом каталоге: ~ pgsql / users.dump.out
Программа make
устанавливает переменную MAKE
, которая может использоваться в make-файлах как $(MAKE)
или ${MAKE}
. Последнее полезно, потому что сценарии оболочки распознают этот синтаксис, и можно повторно использовать некоторые фрагменты сценария между ними.
Помимо этого, между синтаксисом shell/make не так много совпадений, поскольку make
обрабатывает такие вещи, как $$
, иначе, чем shell.
Обращение к сути вопроса :переменная MAKE
помогает с рекурсией, так как программа на самом деле не может быть названа make
(, например, gmake
, pmake
), и вам нужен этот бит информации, чтобы успешно повторяться в той же программе. Программа make
(, однако она (re )с именем )), распознает эту рекурсию независимо от того, используется переменная или нет.
Дополнительная литература:Создание POSIX
$(MAKE)
содержит путь к текущей программе make, если вы не перезапишете его.
Если вы просто вызываете make
или имя вашей реализации make, $(MAKE)
должно содержать только это имя, так как ваша реализация make была вызвана через поиск PATH
. Проверьте это, например. вызов:
cd /usr/bin
./make -f /dev/null | grep MAKE
Если вы вызываете свою реализацию make через абсолютный или относительный путь, $(MAKE)
содержит абсолютный путь к вашей реализации make.
Это позволяет вам использовать $(MAKE)
в ваших файлах make таким образом, что вы всегда будете вызывать одну и ту же программу make, даже если это временный двоичный файл, скомпилированный с отладочными сообщениями и установленный где угодно.
BTW :Вы можете получить начальное значение, установленное вашей программой make, вызвав:
$make -f /dev/null -p | grep MAKE