[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#29337: Bash reads system-wide bashrc unconditionally.
From: |
Roel Janssen |
Subject: |
bug#29337: Bash reads system-wide bashrc unconditionally. |
Date: |
Mon, 20 Nov 2017 22:48:37 +0100 |
User-agent: |
mu4e 0.9.18; emacs 25.1.1 |
Ludovic Courtès writes:
> Hi,
>
> Roel Janssen <address@hidden> 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