Я работаю над правилом makefile и хочу сбросить переменную среды MAKEFILES перед повторным рекурсивным вызовом make. В других системах BSD я делаю это так:
env -u MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
В Linux я делаю так:
env --unset=MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Однако ни один из стилей не работает на Macintosh OS X Mavericks, хотя я ожидаю, что стиль BSD, используемый в других местах, будет работать.
Ошибка, которую я получаю при вызове стиля BSD:
env: illegal option -- u
Как я могу сбросить переменную среды перед вызовом команды в OS X и почему стиль BSD, используемый в других местах, не работает?
Вот справочная страница Mac для env:
ENV(1) BSD General Commands Manual ENV(1)
NAME
env -- set and print environment
SYNOPSIS
env [-i] [name=value ...] [utility [argument ...]]
DESCRIPTION
env executes utility after modifying the environment as specified on the command line. The option name=value specifies an environmental variable, name, with a value of value. The option `-i' causes env to completely ignore the environment it inherits.
If no utility is specified, env prints out the names and values of the variables in the environment, with one name=value pair per line.
DIAGNOSTICS
If the utility is invoked, the exit status of env shall be the exit status of utility; otherwise, the env utility exits with one of the following values:
0 The env utility completed successfully
1-125 An error occurred in the env utility.
126 The utility specified by utility was found, but could not be invoked.
127 The utility specified by utility could not be found.
COMPATIBILITY
The historic - option has been deprecated but is still supported in this implementation.
SEE ALSO
execvp(3), environ(7)
STANDARDS
The env utility conforms to IEEE Std 1003.2-1992 (``POSIX.2'').
BUGS
env doesn't handle commands with equal (``='') signs in their names, for obvious reasons.
BSD August 27, 1993 BSD