Почему директива неэкспорта не работает? - PullRequest
1 голос
/ 09 февраля 2020

Я бы ожидал, что директива unexport make сбросит переменную. Из чтения онлайн кажется, что это то, что он должен делать:

https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html

Если вы хотите запретить экспорт переменной, используйте директива неэкспорта, например:

переменная неэкспорта…

Итак, я привел небольшой пример. В моем первом запуске BAR не установлен и, как ожидается, ничего не печатается; однако затем я устанавливаю переменную среды. Я не ожидал, что ничего будет напечатано, потому что я использую директиву unexport, за исключением того, что значение dogs все еще печатается.

$ cat Makefile
unexport BAR

foo:
    @echo BAR=$(BAR)
$ make
BAR=
$ export BAR=dogs
$ make
BAR=dogs
$ uname -a
Darwin Maxs-MacBook-Pro-Work.local 19.2.0 Darwin Kernel Version 19.2.0: Sat Nov  9 03:47:04 PST 2019; root:xnu-6153.61.1~20/RELEASE_X86_64 x86_64
$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
$ man make | grep unexport

Что здесь происходит? Почему собаки все еще напечатаны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...