Subject: Re: bug#29337: Bash reads system-wide bashrc unconditionally.

From: Roel Janssen <[email-masked]>
Date: Mon, 20 Nov 2017 22:48:37 +0100

Ludovic Courtès writes:

> Hi,
>
> Roel Janssen <[email-masked]> skribis:
>
>> On CentOS 7, the following happens (yes, I added the echo-statement to
>> /etc/bashrc on CentOS as well):
>> $ env - bash --init-file <(echo "echo \"Goodbye, world\"") -i
>> Goodbye, world
>>
>> On GuixSD:
>> $ env - bash --init-file <(echo "echo \"Goodbye, world\"") -i
>> Hello, world
>> Goodbye, world
>>
>> Where does this difference come from?  And could we make its behavior
>> similar to CentOS 7, and more importantly, to the description in the
>> manpage?
>
> By default GuixSD’s /etc/profile (sourced by interactive shells) does
> this:
>
> --8<---------------cut here---------------start------------->8---
> if [ -n "$BASH_VERSION" -a -f /etc/bashrc ]
> then
>   # Load Bash-specific initialization code.
>   . /etc/bashrc
> fi
> --8<---------------cut here---------------end--------------->8---
>
> It comes from commit 1d167b6e3779bcc1666b5c7d5ee802170c7023b6, which was
> about loading the Bash completion code.
>
> Looking at the manual (info "(bash) Bash Startup Files"), I think that
> /etc/bashrc is ignored by default.  Thus it’s up to users/distros to
> decide what to do with it, IIUC.
>
> Thoughts?

Thanks for your reply, Ludo’! 

Well it seems that it isn't ignored when it ought to be ignored -> when
specifying --init-file.  This is a difference between how Bash works on
CentOS 7, and how Bash works on Guix(SD).  I can't find a
user-configurable option to make it work the same as on CentOS 7.

I think I can also achieve my goal by invoking it as "sh", prepending
"env - ENV=/path/to/etc/profile", and setting some environment variables
like HOME and PS1.  So I'll go that route, leaving Guix's Bash
alone. :-)

Kind regards,
Roel Janssen