[PATCH] Remove . from $PATH
Arnaud Lacombe
lacombar@gmail.com
Fri Jul 30 14:15:00 GMT 2010
Hi,
On Fri, Jul 30, 2010 at 6:35 AM, Johannes Stezenbach <js@sig21.net> wrote:
> On Thu, Jul 29, 2010 at 09:29:37PM -0400, Arnaud Lacombe wrote:
>> On Thu, Jul 29, 2010 at 11:19 AM, Johannes Stezenbach <js@sig21.net> wrote:
>> > + local IFS=:
>> > + for p in $PATH; do
>> > + tmp=`(cd /tmp; cd $p 2>/dev/null || :; pwd -P)`
>> this is broken... If you refer to POSIX description of PATH (see [0]),
>> "::" stands as synonym for ":.:" which is translated to the current
>> directory. In your script, you will end up in doing a chdir to the
>> HOME directory (if "set to a non-empty value") and still accepting the
>> (empty) value.
>
> Ouch. Thanks for pointing this out.
>
>> Why not only accepting absolute directory or directory starting with "~":
>>
>> test -n "${var}" -a -z "${var%%[~/]*}" && new=...
>>
>> should do the job.
>
> I agree this is more straight forward. I like it.
> (However I wonder if ~ is valid in PATH? I think the shell will
> expand ~ when you set PATH, but execvp() would not?)
>
I just tested, sh will not do any expansion (even when the variable is
set), and the lookup will fail, so "~" in PATH is not valid. It can be
removed from the test :)
- Arnaud
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list