[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/