emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#29337: closed (Bash reads system-wide bashrc uncon


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#29337: closed (Bash reads system-wide bashrc unconditionally.)
Date: Mon, 20 Nov 2017 21:49:02 +0000

Your message dated Mon, 20 Nov 2017 22:48:37 +0100
with message-id <address@hidden>
and subject line Re: bug#29337: Bash reads system-wide bashrc unconditionally.
has caused the debbugs.gnu.org bug report #29337,
regarding Bash reads system-wide bashrc unconditionally.
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
29337: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=29337
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: Bash reads system-wide bashrc unconditionally. Date: Fri, 17 Nov 2017 13:16:13 +0100 User-agent: mu4e 0.9.18; emacs 25.1.1
Dear Guix,

This is more of an issue for GuixSD.
Our 'bash' package seems to behave differently from other distributions
(like CentOS 7), and it behaves differently from the way described in its
manual page.

I added the following line to /etc/bashrc:
echo "Hello, world"

Here's the command to reproduce the problem:
$ env - bash --init-file <(echo "echo \"Goodbye, world\"") -i
Hello, world
Goodbye, world


>From the manpage:
...
       -i        If the -i option is present, the shell is interactive.
...
       --init-file file
       --rcfile file
              Execute commands from file instead of the standard personal 
initialization file ~/.bashrc if the shell is interactive (see INVOCATION 
below).
...


So, what should happen, is that it ignores the system-wide initialization
file (and the user's initialization file).

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?

Kind regards,
Roel Janssen



--- End Message ---
--- Begin Message --- Subject: Re: 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


--- End Message ---

reply via email to

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