On 6/20/20 8:30 PM, Bruce Dubbs wrote:
On 6/20/20 7:07 PM, Xi Ruoyao via lfs-dev wrote:
On 2020-06-20 16:58 -0500, Bruce Dubbs via lfs-dev wrote:
On 6/20/20 2:42 PM, Xi Ruoyao via lfs-dev wrote:
The discussion with Frans de Boer in lfs-support shown that the environment variables from host can catch us completely off guard.  Though in his case
the
problem is that he forgot to create /home/lfs/.bash_profile, normally
/etc/bash.bashrc would be more dangerous (the book has no consideration of
this
file), and used by many distros.

So if there is no objection I'll commit the change we've discussed in last
Nov.:

/home/lfs/.bash_profile:

      exec env -i ENV=$HOME/.lfs_bashrc \
                  HOME=$HOME            \
                  TERM=$TERM            \
                  PS1='\u:\w\$ '        \
                  /bin/bash --posix

/home/lfs/.lfs_bashrc:

      set +o posix
      set +h
      umask 022
      LFS=/mnt/lfs
      LC_ALL=POSIX
      LFS_TGT=$(uname -m)-lfs-linux-gnu
      PATH=/usr/bin
      if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
      PATH=$LFS/tools/bin:$PATH
      export LFS LC_ALL LFS_TGT PATH

So the --posix in .bash_profile allows the use of
ENV=$HOME/.lfs_bashrc and then the first line in .lfs_bashrc turns posix
mode off?

At a minimum this looks like a hack that needs a fair amount of explanation.

The reason for this is because a user forgot to create .bash_profile?
In that case the above doesn't work.

The discussion just proved that environment variables from host are really
harmful.

  From https://sources.debian.org/src/bash/5.0-6/debian/README/

5. What is /etc/bash.bashrc? It doesn't seem to be documented.

     The Debian version of bash is compiled with a special option
     (-DSYS_BASHRC) that makes bash read /etc/bash.bashrc before ~/.bashrc
     for interactive non-login shells. So, on Debian systems,
     /etc/bash.bashrc is to ~/.bashrc as /etc/profile is to
     ~/.bash_profile.

When I look at a debian system's /etc/bash.bashrc, I don't see what
would affect what we have now.  What was the reported problem?

We've been using the current structure for a long time without a
reported issue.  What's new?

I studied OpenSUSE bash.bashrc a little.  It's a giant monster script (even sourcing some scripts from /etc/profile.d) so I won't be suprised if one day a
bash.bashrc breaks some package.

And after a sleep I realized a more serious issue:  if some distro has a
/usr/share/config.site (or /usr/etc/config.site, which is not FHS and shouldn't exist), it would be used by autotools configure script *even if we are cross
compiling*, and break temporary glibc build.  Perhaps we should "export
CONFIG_SITE=/dev/null" in /home/lfs/.bashrc to override it.

I wrote the above before I saw the messages in -support.  I do note that in my debian system I used to get LFS up on my new system I edited /etc/bash.bashrc so the first line was 'return'.  I did that primarily because I don't like polluting the environment with bash completion stuff.

I think the problem is not 'exec env ... /bin/bash' directly, but the changes to bash invocation by some distros.

I wonder if 'exec env ... /bin/bash --init-file ~/.bashrc' would work. I'll do a test of that.

I tested several options. That /etc/bash.bashrc thing is evil. I edited it to put at the top: echo "IN /etc/bash.bashrc"

Even with your line

exec env -i ENV=$HOME/lfs-bashrc HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash --posix

(Note that I changed the file name to make it a non-hidden file.)

it STILL runs bash.bashrc.  --norc doesn't change that either.  Nor does
--init-file $HOME/lfs-bashrc

In the case if ubuntu though the posix setting does not install the function command_not_found_handle, but I don't think we can really count on that.

Really the I think the only way to handle this is to edit /etc/bash.bashrc to put a return in on the first line or to rename the file and let the user restore it if desired later.

  -- Bruce


--
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to