bug-bash
[Top][All Lists]
Advanced

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

Re: Bash manual - interactive shell definition


From: Pierre Gaston
Subject: Re: Bash manual - interactive shell definition
Date: Fri, 12 Mar 2010 12:39:40 +0200

On Fri, Mar 12, 2010 at 12:15 PM, Ken Irving <ken.irving@alaska.edu> wrote:

> On Fri, Mar 12, 2010 at 11:57:41AM +0200, Pierre Gaston wrote:
> > On Fri, Mar 12, 2010 at 11:50 AM, Ken Irving <ken.irving@alaska.edu>
> wrote:
> >
> > > On Fri, Mar 12, 2010 at 09:16:05AM +0000, Marc Herbert wrote:
> > > > >> Could this sentence:
> > > > >>
> > > > >> "An interactive shell is one started without non-option arguments,
> > > > >> unless -sis specified, without specifying the
> > > > >> -c option, and whose input and error output are both connected to
> > > terminals
> > > > >> (as determined by isatty(3)), or one started with the -i option. "
> > > > >>
> > > > >> be any more confusing?
> > > > >
> > > > > Is seems pretty clearly stated to me.
> > > >
> > > > Please enlighten us with the priority of English boolean operators.
> > > >
> > > > I have never seen a natural language sentence with so many boolean
> > > operators.
> > >
> > > Well I can try.
> > >
> > >    An interactive shell is one started without non-option arguments,
> > >
> > > If there are any arguments then they must be options...
> > >
> > >    unless -s is specified,
> > >
> > > bash(1) says: "If the -s option is present ... then commands are read
> > > from the standard input", which clearly is not interactive.
> > >
> >
> > If you run "bash -s foo bar" in a terminal it starts an interactive
> shell.
>
> Maybe the definition isn't correct, then, if your example is at odds
> with the first two statements.  The -s is accompanied by foo, and bar
> is a non-option argument.    I would think that 'foo' would executed as
> a command, and the the file bar would be run as a script; I don't see
> how this would be interactive, though.
>
> Ken
>
The definition is correct but maybe not too clear.
"unless -s is specified" means  that the first rule is true unless you use
-s ie you can include non option argument
if you use -s and still have an interactive shell, so bash -s foo bar is
interactive (if connected to a terminal)

In fact this clearly stated in the ref manual "The -s invocation option may
be used to set the positional parameters when an interactive shell is
started."

The role played by -c is the definition is less clear to me since with -c
you must give a non option argument  and thus the "non-interactivity" is
probably covered by the first rule
and I don't think you can use both -s and -c at the same time. (well you can
put both but the first one to appear disables the parsing of the second
one)


reply via email to

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