[sclug] puzzle: including ~/bin in $PATH
Roland Turner SCLUG
raz.fpyht.bet.hx at raz.cx
Tue Nov 29 09:10:42 UTC 2005
On Mon, 2005-11-28 at 22:27 +0000, John Stumbles wrote:
> If I do
> echo 'touch bash_profile_woz_ere' >> /home/test/.bash_profile
> and start a kde session as user 'test' on my kubuntu hoary machine I get
> a 'bash_profile_woz_ere' file creates as kde starts up. If I do it on
> debian sarge I don't.
This is a Kubuntu bug/misfeature. X session managers are definitely
_not_ supposed to cause a login shell to be instantiated at startup. In
particular, this would rob you of the ability to seperate login-with-X
and login-without-X behaviour, short of some nasty special-casing in
your .bash_profile.
> So it seems that under kubuntu kde is executing .bash_profile.
>
> I've trawled through all the likely-looking kde-related files I can find
> (find / -xdev -name 'kde*') on the kubuntu machine for anything
> accessing .bash_profile, but in vain. Surely it's not compiled into
> kubuntu's kde build .... ?
No. Somewhere Kubuntu's KDE session manager is invoking a login shell,
either by manipulating argv[0][0] in an explicit exec() call, or by
adding the -l/--login argument to the first line of a shell script
somewhere. For the sake of a concrete example, one way to do this might
be to set the first line of /usr/bin/kde-session-manager (I made that
name up; don't know the real one, and don't even know whether it's a
shell script) from
#! /bin/sh
to
#! /bin/bash -l
There are many other approaches.
But again, to answer the original question, the place to set Bash's PATH
is ~/.bashrc, not ~/.bash_profile. The place to set a PATH for the whole
of an X session is session-manager specific.
- Raz
More information about the Sclug
mailing list