[vox-tech] bash environment variables (and KDE)
Bryan Richter
vox-tech@lists.lugod.org
Fri, 30 Apr 2004 11:14:05 -0700
On Fri, Apr 30, 2004 at 10:41:47AM -0700, Mark K. Kim wrote:
> ~/.bashrc OR ~/.bash_profile. One gets run when you open a terminal, the
> other when there is no terminal. I gave up trying to figure it out 'cuz
> it's so twisted and inconsistent from distribution to distribution, no
> matter what the man page says or how it's supposed to be.
>
> The latest technique seems to be to get ~/.bash_profile to run ~/.bashrc,
> and check the PS1 (the prompt) variable to see if we're inside a terminal
> or not. If it is, then display some fortune messages and set some
> interesting variables for controlling the terminal behavior and what not.
> Otherwise we're probably running inside a script so don't do anything we'd
> want done only inside a terminal.
>
> -Mark
>
>
> On Fri, 30 Apr 2004, Jonathan Stickel wrote:
>
> > There are still a couple things in linux that seem to be unnecessarily
> > convoluted and really bug me. One is sound, which I've finally managed
> > to work around using alsa and dmix.
> >
> > The other is handling user-specified shell environment variables. I use
> > bash, and by trial and error I've found I can put what I want in
> > .bashrc. IIRC, I remember reading that this really isn't the place for
> > custom variables, but this is what has worked for me. Recently, I've
> > defined $TEXINPUTS, a path variable for tex/latex. When I run latex
> > from shell, it uses the path I've defined by $TEXINPUTS correctly.
> > However, if I start Emacs from KDE's kmenu, $TEXINPUTS is NOT read, and
> > thus running latex from within Emacs doesn't work like I expect. It
> > turns out that KDE, when started through xdm/kdm, does not read .bashrc
> > at all
> > (http://lists.debian.org/debian-kde/2002/debian-kde-200209/msg00083.html).
> > However, .bashrc does get read when starting a shell from within KDE.
> >
> > So my question is: what really is the correct place to put
> > user-specific bash variables? And, how do I make KDE read them when
> > logging in from kdm?
> >
Yeah, .bash_profile is read by a 'login' shell, and .bashrc is read by
a 'non-login' shell. So, 'bash -l' will read .bash_profile, and 'bash
shell_script.sh' will read .bashrc. I finally realized that anything
that I'd want in .bashrc, I'd want in .bash_profile as well, so I call
.bashrc from .bash_profile, like Mark said.
If KDE doesn't read those environment variables, that seems broken.
...and after reading the article you linked, I see other people agree.
My opinion is this: if KDE is going to take over user input to such a
degree that a SHELL (i.e. user interface) never gets to see any action,
there should be a KDE-method for creating an environment. Any KDE users
know of such a thing?
The other option is to let a shell back in the loop. Disable xdm/kdm
(usually just by changing default runlevel in /etc/inittab), log in on
the console, and run startkde. I prefer the l33t look of a blinking
cursor at a text prompt anyway. :)
-Bryan