tech-userlevel archive

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

Re: interactive shell detection in shrc



At Fri, 27 Sep 2024 07:14:46 +0700, Robert Elz <kre%munnari.OZ.AU@localhost> wrote:
Subject: Re: interactive shell detection in shrc
>
>     Date:        Thu, 26 Sep 2024 15:16:39 -0700
>     From:        "Greg A. Woods" <woods%planix.ca@localhost>
>     Message-ID:  <m1stwmt-0036s2C@more.local>
>
>   | I'm very curious:  why did you include "m" in that test?
>
> I wondered about that as well.   But I suspect you have
> supplied the answer.
>
>   | I do note the following from the bosh(1) manual:
>   |
>   | 	... POSIX requires that job control is auto-enabled for
>   | 	interactive shells ...
>
> It actually requires it to be on by default in interactive shells,
> that's almost what the above says, but it could be read as not
> allowing "sh +m" to start an interactive shell with job control
> disabled -- which is not what posix requires.
>
>   | But I'm pretty sure the key word there is "interactive", which will by
>   | definition also mean they have 'i' in $-.
>
> It would, but as you point out -i isn't always available there, but -m
> should be,

But that was my point!  "m" is not in $- either!

However it seems my own test conflates the condition of being a "login
shell" with being "interactive".

Reading POSIX Issue 7 sh(1) just now I note the following text:

	If the -i option is present, or if there are no operands and the
	shell's standard input and standard error are attached to a
	terminal, the shell is considered to be interactive.

So there's nothing in POSIX about login(1) tacking a leading hyphen on
and using that to trigger the shell to become a login shell.

Indeed from what I can tell POSIX has nothing whatsoever to say about
"login shells" nor /etc/profile or $HOME/.profile.

I guess to be entirely POSIX compatible my test should include:

	tty >/dev/null 2>&1 && tty <&1 >/dev/null 2>&1 &&
		[ "$0" = "$SHELL" ] &&
		_interactive=true

--
					Greg A. Woods <gwoods%acm.org@localhost>

Kelowna, BC     +1 250 762-7675           RoboHack <woods%robohack.ca@localhost>
Planix, Inc. <woods%planix.com@localhost>     Avoncote Farms <woods%avoncote.ca@localhost>

Attachment: pgpV9S9vNm6Lx.pgp
Description: OpenPGP Digital Signature



Home | Main Index | Thread Index | Old Index