Bug ID | 1088524 |
---|---|
Summary | Recent aaa_base update breaks sourcing of bash.bashrc.local |
Classification | openSUSE |
Product | openSUSE Distribution |
Version | Leap 42.3 |
Hardware | Other |
OS | Other |
Status | NEW |
Severity | Normal |
Priority | P5 - None |
Component | Basesystem |
Assignee | bnc-team-screening@forge.provo.novell.com |
Reporter | archie.cobbs@gmail.com |
QA Contact | qa-bugs@suse.de |
Found By | --- |
Blocker | --- |
This commit created a bug: https://github.com/openSUSE/aaa_base/commit/b9a57d5a64b3d2d09bc591f894f6558f1945df70 The bug is that "unset is" was added to /etc/profile. That causes "is" to get unset on bash.bashrc when /etc/profile is invoked here (line 326): if test \( -n "$SSH_CONNECTION" -o -n "$SUDO_COMMAND" \) -a -z "$PROFILEREAD" ; then _SOURCED_FOR_SSH=true . /etc/profile > /dev/null 2>&1 unset _SOURCED_FOR_SSH fi As a result, all code following this point in bash.bashrc that depends on variable $is is broken. In particular, the sourcing of bash.bashrc.local. WTF this commit is attempting to do is unknown because the bug that motivated it is not public. Here's a proposed fix: --- bash.bashrc.orig 2018-04-06 15:28:43.298226415 -0500 +++ bash.bashrc 2018-04-06 15:29:33.962045536 -0500 @@ -324,8 +324,11 @@ # Just in case the user excutes a command with ssh or sudo # if test \( -n "$SSH_CONNECTION" -o -n "$SUDO_COMMAND" \) -a -z "$PROFILEREAD" ; then + _SAVED_IS="$is" _SOURCED_FOR_SSH=true . /etc/profile > /dev/null 2>&1 + is="$_SAVED_IS" + unset _SAVED_IS unset _SOURCED_FOR_SSH fi My recommendation is that if these files are going to be sourcing each other, then because bash has a global namespace, each file needs to use variable names that have some unique prefix or something.