On Mon, Mar 25, 2019 at 4:27 PM Stephen John Smoogen <smooge(a)gmail.com> wrote:
On Mon, 25 Mar 2019 at 11:18, Kevin Fenzi <kevin(a)scrye.com> wrote:
>
> On 3/25/19 8:02 AM, Adam Williamson wrote:
> > On Mon, 2019-03-25 at 12:59 +0100, Dridi Boukelmoune wrote:
> >> And since RPM appears to be configurable for the
> >> default interpreter, have it use /usr/bin/bash by default.
> >
> > TBH, it seems to me reasonable that we just do this.
> >
> > If our position is that we actually expect Fedora package scriptlets to
> > be executed by bash and don't think it's a problem if they don't
work
> > when executed by some other shell, why not this make this clear and
> > explicit in this way instead of having the default be sh, but then tell
> > people sh must be bash?
>
> Doesn't bash behave slightly differently when invoked as 'sh' ?
>
> Long ago it used to, but I don't know if thats still the case...
>
It will interpret some things differently but does not shut off things
like pushd/popd and $() and various other things that are either
considered non-POSIX
But but... $() is in POSIX sh! Don't refrain from using that one! :D
It's rather things like custom `set -...` options, custom builtins,
associative arrays... Bash in POSIX mode doesn't enforce a strict
POSIX sh syntax:
$ cat test.sh
a=(a b c)
echo ${#a[@]}
$ bash test.sh
3
$ bash --posix test.sh
3
$ dash test.sh
test.sh: 1: test.sh: Syntax error: "(" unexpected
> Man page:
>
> If bash is invoked with the name sh, it tries to mimic the startup
> behavior of historical versions of sh as closely as possible, while
> conforming to the POSIX standard as well. When invoked as an interac‐
> tive login shell, or a non-interactive shell with the --login option,
> it first attempts to read and execute commands from /etc/profile and
> ~/.profile, in that order. The --noprofile option may be used to
> inhibit this behavior. When invoked as an interactive shell with the
> name sh, bash looks for the variable ENV, expands its value if it is
> defined, and uses the expanded value as the name of a file to read and
> execute. Since a shell invoked as sh does not attempt to read and exe‐
> cute commands from any other startup files, the --rcfile option has no
> effect. A non-interactive shell invoked with the name sh does not
> attempt to read any other startup files. When invoked as sh, bash
> enters posix mode after the startup files are read.
>
> When bash is started in posix mode, as with the --posix command line
> option, it follows the POSIX standard for startup files. In this mode,
> interactive shells expand the ENV variable and commands are read and
> executed from the file whose name is the expanded value. No other
> startup files are read.
>
> ====
> The argument of where posix conformity ends and where adding features begins.
>
>
> > kevin
> >
> >
> >
> > _______________________________________________
> > devel mailing list -- devel(a)lists.fedoraproject.org
> > To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
> > Fedora Code of Conduct:
https://getfedora.org/code-of-conduct.html
> > List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
> > List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
>
>
>
> --
> Stephen J Smoogen.
> _______________________________________________
> devel mailing list -- devel(a)lists.fedoraproject.org
> To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
> Fedora Code of Conduct:
https://getfedora.org/code-of-conduct.html
> List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org