[Bug 1097467] Re: bash does not fulfill --rcfile option properly
Dave Jones
1097467 at bugs.launchpad.net
Tue Aug 23 18:32:24 UTC 2022
This has apparently been an issue for some considerable time. I've just
now run into it while delving into a failure in pexpect's test-suite
(during work on LP: #1987420), which apparently assumes that using
--rcfile will suppress both the user *and* the system's bashrc (as the
man-page documents).
However, I'm not entirely convinced this is a bug in bash, so much as
its man-page. Reading the original code (shell.c in bash) its intent is
fairly clear: execute the system-wide bashrc in all interactive shells,
but permit the user's bashrc to be overridden by --rcfile.
It's worth noting that the original (upstream, not Debian) man-page
makes no mention of the system-wide bashrc because it's an option that's
not activated by default. The Debian packaging enables the system-wide
bashrc (SYS_BASHRC in d/p/deb-bash-config.diff) and then patches the
man-page to mention it (d/p/man-bashrc.diff). In other words, I suspect
this is a documentation bug rather than a behavioural bug (i.e. the man-
page is wrong, not the behaviour).
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bash in Ubuntu.
https://bugs.launchpad.net/bugs/1097467
Title:
bash does not fulfill --rcfile option properly
Status in bash package in Ubuntu:
Confirmed
Bug description:
I am starting a bash shell using
$ bash --noprofile --rcfile my-custom-bash-rc-file
Due to the --rcflag, the newly started bash should *not* execute
commands from /etc/bash.bashrc. That is at least how I interpret `man
bash`:
--rcfile file
Execute commands from file instead of the system wide initialization file /etc/bash.bashrc and the standard personal initial‐
ization file ~/.bashrc if the shell is interactive (see INVOCATION below).
However, it seems that the commands in /etc/bash.bashrc are in fact
executed.
To see/reproduce/diagnose this, on Ubuntu I believe one can just
invoke bash like this (as the regular user):
$ touch testrc
$ env -i bash --noprofile --rcfile testrc
The expected result would be that nothing special is printed on the
terminal. However, there is an error message, which is printed from
/etc/bash.bashrc. The "env -i" causes $HOME to not be set in the
invoked shell, which in turn triggers the error. The error message is:
> To run a command as administrator (user "root"), use "sudo <command>".
> See "man sudo_root" for details.
Another way to see this -- without the "env -i" -- is to add a
command to /etc/bash.bashrc, such as
echo HELLO THERE
To trigger the bug(?), one can then just do
$ touch testrc
$ bash --noprofile --rcfile testrc
The expected result would be that nothing special is shown in the
terminal. However, it turns out that the string
HELLO THERE
is printed.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1097467/+subscriptions
More information about the foundations-bugs
mailing list