make: evaluation of symbolic link with ../ fails

Julian H. Stacey jhs at berklix.org
Tue Nov 6 08:17:58 PST 2007


Hi Harti cc Hackers,
Thanks for answer.

> Are you sure that this is not a problem with /bin/sh?

Good question ! I think you'r right. I tested several shells with
	[ Effectively: ln -s /usra/jhs/xtra/pics /usra/home/jhs/pics ] +
	source `which unsetenv.csh`
	[ sh, bash, csh, ksh, zsh ]
	cd /usra/home/jhs ; cd pics/.. ; pwd ; /bin/pwd
& got these results:
	sh:
		/usra/home/jhs
		/usra/home/jhs
	bash:
		/usra/home/jhs
		/usra/home/jhs
	csh:
		/usra/jhs/xtra
		/usra/jhs/xtra
	ksh:
		/usra/home/jhs
		/usra/home/jhs
	zsh:
		/usr/home/jhs
		/usra/home/jhs

> Make always execs a 
> shell if it finds special symbols like ';' in the line. It does not 
> interprete the cd.
> 
> What shell are you using (I mean in which shell did you do the successful 
> tests above)?

Csh

> Try something like:
> 
> SHELL: name="sh" path="/path/to/your/shell"
> 
> in the Makefile (given that you're not using a c-shell). If it works then 
> the problem is in /bin/sh.

My Makefile specifies no shell (so I assume it uses /bin/sh)
My Makefile did have a 
	.include <bsd.subdir.mk>
but I have just hashed it out & I have no other
include line that might include specification elsewhere of shell.
FreeBSD includes leave shell unchanged:
	cd /usr/share/mk ; grep -i SHELL *
	sys.mk:SHELL            ?=      sh

It seems to me that all except csh (including bourne shell !) are
broken !! Amazing ! None of them cope properly actually following
symbolic links, they all make false premise the /some_path/.. ==
/some_path !

-- 
Julian Stacey. Munich Computer Consultant, BSD Unix C Linux. http://berklix.com
	Ihr Rauch=mein allergischer Kopfschmerz. Dump cigs 4 snuff.
 Q: Global warming,pollution,water,fish,fuel shortages etc. A: Contraception.


More information about the freebsd-hackers mailing list