the issue of environment value $PS1 set under Ubuntu 10.04

Dan Nicholson dbn.lists at gmail.com
Fri Jun 4 06:40:13 PDT 2010


On Fri, Jun 4, 2010 at 1:40 AM, littlebat <dashing.meng at gmail.com> wrote:
> This issue was posted onto lfs-support mailing list yesterday (see: http://linuxfromscratch.org/pipermail/lfs-support/2010-June/038814.html ), unluckly I disabled the mail delivery of LFS mailing list some days ago, so I can't continue discuss it on the lfs-support mailing list. And, I consider it is a bug of LFS6.6 book, so I start a new thread on the lfs-dev list to discuss it.
>
> I am using Ubuntu 10.04 as the LFS building host. When I set environment with the instructions at: 4.4. Setting Up the Environment: http://www.linuxfromscratch.org/lfs/view/6.6/chapter04/settingenvironment.html , I found the commands provided by LFS book can't set $PS1 value under Ubuntu 10.04 host properly. The commands is below:
>
> <code>
> cat > ~/.bash_profile << "EOF"
> exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
> EOF
> </code>
>
> The issue is Ubuntu has a system-wide .bashrc file for interactive bash(1) shells, it is /etc/bash.bashrc. $PS1 has been set to PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' in this file. When the command above invoke "/bin/bash" to start a new interactive bash shells, /etc/bash.bashrc will invoked first, this $PS1 value will be seted. So, $PS1 keep as the format like "lfs at u1004b2-desktop:~$ ", not the format excepted by LFS6.6 book like "lfs:~$ ".

Looks like debian and ubuntu hosts have the SYS_BASHRC definition set,
which will source /etc/bash.bashrc before ~/.bashrc on non-interactive
logins. Seems like the easiest fix is to move the PS1 setting to
~lfs/.bashrc, but it probably doesn't affect anything to leave the
ubuntu settings.

On the other hand, the whole point of that setup is to get full
control over the shell environment, and now you have arbitrary things
being set from /etc/bash.bashrc. Probably the only true way to avoid
this is to build your own bash and run it. The other way is to run the
interactive shell with --posix and ENV set.

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' ENV=$HOME/.bashrc
/bin/bash --posix
EOF

Of course, you lose all the nice bashisms, though.

--
Dan



More information about the lfs-support mailing list