Re: git: 497cdf9673ec - main - sh: read more profile files.

From: Cy Schubert <Cy.Schubert_at_cschubert.com>
Date: Sun, 09 Oct 2022 13:26:23 UTC
In message <20221009091405.171bde4f@thor.intern.walstatt.dynvpn.de>, 
FreeBSD Us
er writes:
> Am Sat, 1 Oct 2022 21:31:18 GMT
> Dag-Erling Sm=C3=B8rgrav <des@FreeBSD.org> schrieb:
>
> > The branch main has been updated by des:
> >=20
> > URL: https://cgit.FreeBSD.org/src/commit/?id=3D497cdf9673ec53d59634bb7886=
> 2cd8dea3d5c155
> >=20
> > commit 497cdf9673ec53d59634bb78862cd8dea3d5c155
> > Author:     Dag-Erling Sm=C3=B8rgrav <des@FreeBSD.org>
> > AuthorDate: 2022-09-09 13:08:43 +0000
> > Commit:     Dag-Erling Sm=C3=B8rgrav <des@FreeBSD.org>
> > CommitDate: 2022-10-01 21:30:56 +0000
> >=20
> >     sh: read more profile files.
> >    =20
> >     Differential Revision: https://reviews.freebsd.org/D36505
> >     MFC after:      1 month
> > ---
> >  bin/sh/profile          | 20 ++++++++++++++++++++
> >  etc/mtree/BSD.root.dist |  2 ++
> >  2 files changed, 22 insertions(+)
> >=20
> > diff --git a/bin/sh/profile b/bin/sh/profile
> > index b77c8787c79d..afcbeaf4110b 100644
> > --- a/bin/sh/profile
> > +++ b/bin/sh/profile
> > @@ -12,3 +12,23 @@
> >  # msgs -q
> >  # Allow terminal messages
> >  # mesg y
> > +
> > +# Load each file in /etc/profile.d/, then /usr/local/etc/profile, then
> > +# each file in /usr/local/etc/profile.d/.
> > +_loaded=3D${_loaded:-/etc/profile}
> > +export _loaded
> > +for _dir in /etc /usr/local/etc ; do
> > +	for _file in "${_dir}"/profile "${_dir}"/profile.d/* ; do
> > +		if [ -f "${_file}" ] ; then
> > +			case :${_loaded}: in
> > +			*:"${_file}":*)
> > +				;;
> > +			*)
> > +				_loaded=3D"${_loaded:+${_loaded}:}${_file}"
> > +				. "${_file}"
> > +				;;
> > +			esac
> > +		fi
> > +	done
> > +done
> > +unset _loaded _dir _file
> > diff --git a/etc/mtree/BSD.root.dist b/etc/mtree/BSD.root.dist
> > index 8bea31212217..5ee5da8ee149 100644
> > --- a/etc/mtree/BSD.root.dist
> > +++ b/etc/mtree/BSD.root.dist
> > @@ -84,6 +84,8 @@
> >          ..
> >          ppp
> >          ..
> > +        profile.d
> > +        ..
> >          rc.conf.d
> >          ..
> >          rc.d
> >=20
>
> According to this commit, I took the liberty opening a PR (id=3D266913) bec=
> ause some ports, like
> lang/gawk and x11-toolkits/vte3, install their SH and CSH set of shell conf=
> iguration files into
> ${LOCALBASE}/etc/profile.d/, i.e. vte.{sh|csh}.=20
> The proposed/commited /etc/profile includes also *.csh files, which trigger=
> s some disturbing
> error messages during a full login (i.e. su - ) and the list of those messa=
> ges increase with
> the number of unfitting shell configuration files.
> I do not have a general solution, maybe someone more enlighted can take a l=
> ook at this.

I had the same problem. Though my source tree contains the changes I 
reverted them locally on each machine and etcupdate will ensure that this 
never creeps back in again. This is clearly a POLA violation and probably 
needs a knob to either enable it if disabled by default or disable it if 
enabled by default.

I think a little redesign with the consideration that some ports do weird 
things might be the path forward. Part of this redesign might be 
documentation of some standards port maintainers must adhere to or maybe 
something a little more subtle such as only execute these additional 
scripts under certain conditions, such as testing $SHELL before executing 
${LOCALBASE}/profile.d/* scripts.

Personally, I like option 1, document standards which port maintainers must 
follow. Each additional script must test $SHELL. Most if not all additional 
profile scripts provided by add-on software assume bash. Not everyone uses 
bash.


-- 
Cheers,
Cy Schubert <Cy.Schubert@cschubert.com>
FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  http://www.FreeBSD.org
NTP:           <cy@nwtime.org>    Web:  https://nwtime.org

			e^(i*pi)+1=0