Отключения обновления времени доступа должно быть достаточно:
zfs set atime=off bpool/backup
GNU make
есть функция, позволяющая сделать именно это, и она называется $(info....)
.
Вы можете поместить следующую строку вне rule
, и GNU make выполнит ее:
$(info variable x = $x))
И если вы обнаружите, что постоянно выполняете такого рода задачи, вы можете абстрагировать их в macro
и вызывать там, где это необходимо:
make -f - <<\eof
dumpvar = $(info variable `$1' value is >>>$($1)<<<)
ssl_enable = NO
$(call dumpvar,ssl_enable)
.PHONY: all
all:;@:
eof
На стауте будет отображаться следующее:
variable `ssl_enable' value is >>>NO<<<
гм, возможно, но бесполезно.
Вы должны понимать, что Makefile не похож на сценарий оболочки. Makefile определяет цели и то, что нужно сделать, чтобы сделать эти цели. Если вы помните об этом, выполнение ложной команды в Makefile становится концептуальной проблемой. Когда эта команда будет выполнена? Нет цели, которая могла бы вызвать эту команду.
Можно:
MY_VAR := $(shell ls)
all:
@echo MY_VAR IS $(MY_VAR)
Обратите внимание, что я предположил GNU make
. Это выполнит ls
для вас и поместит вывод в MY_VAR
. Но это взлом, которого следует избегать.
Вы также можете попробовать дополнительную цель
extra:
@echo $(x)
и добавьте это как предварительное требование -для всех остальных целей.
Бонус :связан с тем, что в строке @echo $(x)
нет разделителя. В этом месте файла make
ожидает цель с :
, а :
в этой строке нет. (есть и другие возможности, такие как присвоение новой переменной и т. д., конечно)