Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14503 > unrolled thread
| Started by | Stephane Chazelas <stephane.chazelas@gmail.com> |
|---|---|
| First post | 2018-08-15 20:23 +0100 |
| Last post | 2018-08-15 20:23 +0100 |
| Articles | 1 — 1 participant |
Back to article view | Back to gnu.bash.bug
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: "sh -a" sets the POSIXLY_CORRECT *environment* variable Stephane Chazelas <stephane.chazelas@gmail.com> - 2018-08-15 20:23 +0100
| From | Stephane Chazelas <stephane.chazelas@gmail.com> |
|---|---|
| Date | 2018-08-15 20:23 +0100 |
| Subject | Re: "sh -a" sets the POSIXLY_CORRECT *environment* variable |
| Message-ID | <mailman.5153.1534361016.1292.bug-bash@gnu.org> |
2018-08-15 11:05:06 -0400, Chet Ramey: > On 8/14/18 11:50 AM, Stephane Chazelas wrote: > > Hi, > > > > This is from > > https://unix.stackexchange.com/questions/462333/why-does-a-in-bin-sh-a-affect-sed-and-set-a-doesnt > > (original investigation by Mark Plotnick) > > > > Though not documented, enabling the POSIX mode in bash whether > > with > > > > - bash -o posix > > - sh > > - env SHELLOPTS=posix bash > > - set -o posix # within bash > > > > causes it to set the value of the $POSIXLY_CORRECT shell > > variable to "y" (if it was not already set) > > Yes. This behavior dates from early 1997. It was put in on request so users > could get a posix environment from the shell, since GNU utilities > understand the POSIXLY_CORRECT variable. I could improve the documentation > there, but a 20-plus-year-old feature isn't going to change. [...] Maybe there was a misunderstanding. It's fine that bash enters POSIX mode when $POSIXLY_CORRECT is set. IOW, it's fine that bash enters POSIX mode when the users request it. The problem I'm trying to raise is about the reverse behaviour: that bash takes upon itself to request POSIX mode of all other utilities when it itself enters POSIX mode, that it sets $POSIXLY_CORRECT when it enters POSIX mode. The problem would show up mostly with #! /bin/sh -a scripts on systems where sh is bash, and where the script relies on non-POSIX behaviours of some GNU utilities. I can't see how that could be seen as a feature, I can't imagine anyone wanting that. If one wants to get a POSIX environment on a GNU system, they would do: export POSIXLY_CORRECT=y (and yes, it's good that bash does honour it) (and yes, it's not a very good interface as that means it can break scripts called within that environment and that rely on non-POSIX behaviour of some utilities, but that's beside the point being made here). If one wants a POSIX shell, they can use #! /bin/sh - Or: #! /usr/bin/env bash set -o posix if they can't rely on /bin/sh being a POSIX shell. But that should not affect the behaviour of all other utilities called within the script. Without "-a", it's OK as the $POSIXLY_CORRECT variable is not exported (it's not very useful that bash sets it (especially considering it's not documented), but at least it's harmless). -- Steohane
Back to top | Article view | gnu.bash.bug
csiph-web