From: Junio C Hamano Date: Thu, 23 Aug 2007 09:25:27 GMT Subject: Re: [PATCH] Fixed non portable use of expr and removed incorrect use of test -eq for string comparison Message-ID: <7vveb6txfc.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20070823090600.GB6573@informatik.uni-freiburg.de> Uwe Kleine-König writes: > Junio C Hamano wrote: >> By the way, I do not know if the use of "which" there is >> portable. Have Solaris folks tried this program ever? > I don't count myself to "Solaris folks", even though I still use it to > read and write my email. But anyhow I know some of the pitfalls... > > login@~ > /bin/bash --version > GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10) > Copyright (C) 2004 Free Software Foundation, Inc. > > login@~ > /bin/bash > > zeisberg@login ~$ which httpd && echo successful > no httpd in /home/zeisberg/bin /home/zeisberg/usr/bin /opt/bin > /usr/local/graphics/bin /usr/local/gnu/bin /usr/local/bin > /usr/local/X11R6/bin /usr/xpg4/bin /usr/bin /usr/ccs/bin /usr/sbin > /usr/ucb /usr/openwin/bin > successful Thanks. Somebody else tried: found=`which "$command"` if test -n "$found" then ... use $found as the full path to the command fi and got burned because "no httpd in ..." comes to the stdout! I did not exactly recall if there was an issue with the exit status, but your demonstration shows that the status is also useless. We _could_ do something ugly and pointless like: test -f `which "$command"` but I'd say I prefer the alternative I sent out at that point.