On 2020-06-20 21:24 -0500, Bruce Dubbs via lfs-dev wrote: > 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.
It's strange. I read bash code and commit history but found --norc should disable loading of SYS_BASHRC, since bash-2.0. It also really works on latest Arch (but it didn't work on Arch in Nov 2019). -- Xi Ruoyao <xry...@mengyan1223.wang> School of Aerospace Science and Technology, Xidian University -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page