bug-bash
[Top][All Lists]
Advanced

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

Local envvar remaining after function call


From: Akim Demaille
Subject: Local envvar remaining after function call
Date: Mon, 14 Oct 2013 15:51:45 +0200

Hi!

I have this weird behavior that I do not understand: when running

        FOO=1 foo

I do not expect FOO to remain in the env after foo was invoked, even
if foo is a shell function.  However it does, _if_ bash is invoked
in POSIX mode, something which I couldn't find documented in the
model (and I wouldn't know where to find this information in POSIX).

Is this really on purpose?  It breaks natural assumptions in /bin/sh
scripting programming :/

$ cat /tmp/foo.sh
foo()
{
  echo "FOO=$FOO"
}

foo
FOO=1 echo "FOO=$FOO"
foo
FOO=1 foo
foo
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
Copyright (C) 2007 Free Software Foundation, Inc.
$ bash foo.sh
FOO=
FOO=
FOO=
FOO=1
FOO=
$ bash --posix foo.sh
FOO=
FOO=
FOO=
FOO=1
FOO=1    <======= unexpected





reply via email to

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