On Thursday 29 May 2008, Ryo Furue wrote: > Hi KDE users, > > I think this question comes up from time to time: When and how are > environmental variables set? How are users supposed to set their own? > > Last time I asked this question, I eventually found that if you make a > symbolic link in ~/.kde/env/ to your ~/.profile (or ~/.bash_profile) > and add an extension ".sh" to the link name, then it's sourced during > the KDE startup. Good. Actually any directory in the list of kde-config --path exe but /bin replaced by /env Any file with extension .sh in there is sourced by startkde, the script which starts a full KDE session. I am not sure if there is an official name for this, but I call it "environment extender" :) > But, today I realized that without a link in ~/.kde/env/ , my > ~/.bash_profile is somehow sourced. My system is the testing > distribution of Debian, which is constantly updated, and KDE has > been updated for a few times since I set ~/.kde/env/ , I think. > Does that mean that KDE now sources the user's ~/.profile ? No. However the shell running startkde might read files during its startup, e.g. bash reads different files depending on if it is started as a login shell, non-interactive shell, interactive shell, etc. Thus running startkde manually from a console might get you a different environment than having it started through KDM, GDM, etc. > Since I first found that in konsole, I thought that my bash was invoked > as a login shell. But, no; the value of $0 was "/usr/bin/bash" or > something similar, not "-bash". Also I examined the env.vars. of > /usr/bin/ssh-agent, which is invoked by ssh-add, which is in turn > invoked from ~/.kde/Autostart/ , and sure enough, its > env.vars. contained my own ones set in my .bash_profile. In a Konsole window, or most likely any terminal emulator window, the shell will be invoked as a non-login interactive shell. Again, depending on the shell there might be differences in which files it reads. > This leads to another annoyance: I have launcher icons on my panels. > I set one of them to invoke "emacs" and hoped that it would invoke > /usr/local/bin/emacs because that's the first one in my PATH. But, > it invokes /usr/bin/emacs instead. That probably means that the > program that manages the panels (I don't know its name) doesn't get > my env.vars. > > So, I'd like to know, once and for all, how these things work. What > should I read? I think the safest way is to use the environment extender mechanism or to set the variables as a point prior to KDE startup, i.e. whereever the distribution sets globally used environment variables. To check how the variables of the KDE session are set, you can execute a command through "Run Command" (or ALT+F2), like this env > /tmp/kdeenv.txt Cheers, Kevin -- Kevin Krammer, KDE developer, xdg-utils developer KDE user support, developer mentoring
Attachment:
signature.asc
Description: This is a digitally signed message part.
___________________________________________________ This message is from the kde mailing list. Account management: https://mail.kde.org/mailman/listinfo/kde. Archives: http://lists.kde.org/. More info: http://www.kde.org/faq.html.