bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bash 4.0.x sourcing


From: Chet Ramey
Subject: Re: bash 4.0.x sourcing
Date: Tue, 28 Apr 2009 11:43:08 -0400
User-agent: Thunderbird 2.0.0.21 (Macintosh/20090302)

Gabor Z. Papp wrote:
> Hello,
> 
> $ bash --version
> GNU bash, version 4.0.17(1)-release (i686-pc-linux-gnu)
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> 
> This is free software; you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> 
> $ ls -l /bin/sh
> lrwxrwxrwx 1 root root 4 Apr 27 08:51 /bin/sh -> bash
> 
> $ cat bla 
> #! /bin/sh
> cd /tmp
> rm -f aaaa
> echo "id" > aaaa
> if [ -f "aaaa" ]; then echo "sourcing aaaa"; . aaaa; fi
> 
> $ ./bla 
> sourcing aaaa
> ./bla: line 5: .: aaaa: file not found
> 
> $ bash ./bla 
> sourcing aaaa
> uid=101(gzp) gid=101(gzp)
> groups=101(gzp)
> 
> Is this "file not found" problem known in bash4?

This is a property of bash's posix mode, which bash uses when run as `sh'.
The manual says, in the section describing posix mode:

        The . and source builtins do not search the current directory
        for the filename argument if it is not found by searching PATH.

If you don't have `.' or the current directory in $PATH, the shell won't
find the file to source.

Posix says:

If file does not contain a <slash>, the shell shall use the search path
specified by PATH to find the directory containing file.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer

Chet Ramey, ITS, CWRU    chet@case.edu    http://cnswww.cns.cwru.edu/~chet/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]