%% Eric Hanchrow <[EMAIL PROTECTED]> writes:
eh> all:
eh> @echo wildcard: $(wildcard ~)
eh> @echo shell : $(shell echo ~)
eh> # GNU Make version 3.78.1 (as shipped with RedHat 6.2)
eh> # GNU bash, version 1.14.7(1) (as shipped with RedHat 6.2)
eh> # Here's the output I get:
eh> # 09:00:28 [erich@emerald erich]$ make -f weird
eh> # wildcard: /home/erich
eh> # shell : ~
eh> # I would have expected *both* commands to have expanded the tilde,
eh> # not just the command that calls `wildcard'.
The $(shell ...) function invokes /bin/sh and sends it whatever command
you gave.
Most traditional Bourne shells don't provide the ~ feature; that came
from csh and was adopted by newer Bourne shells like bash and ksh, but
often /bin/sh on a system is a very basic Bourne shell with no fancy
features. On Linux, /bin/sh is often bash but it starts in a "simple"
mode that doesn't allow more advanced features.
The $(wildcard ...) command uses a builtin globbing library, which is
basically the globbing code from GNU GLIBC (or, if your system is a
Linux box, then it uses the system globbing library since the system
globbing library _is_ GLIBC), rather than the shell. That globbing
library does understand ~.
HTH.
--
---
Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at:
http://www.gnu.org http://www.paulandlesley.org/gmake/
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist