On Wed, Jul 08, 2020 at 10:44:39AM +1000, Zenaan Harkness wrote: > - XFCE acts as, or uses, Dash or something that does not propagate shell > functions in the parent env
There are many layers involved. Assuming you're logging in with a "Debian X session", a POSIX shell (sh) is used to read most of the config files for the Xsession stuff. Bash extensions like exporting functions won't be possible at that point. > - so launch startx, figuring out over many failures to start "modern" > "sessions" Yeah, as I keep saying to others on this list, the entire login paradigm is different when you use startx vs. a display manager. Testing one by using the other is not going to work. With a console+startx login, your session is begun by an interactive login shell (probably bash). Tricks like exporting functions into the environment with the intent to make them available in all of your future xterms *will* work from here. They *won't* work from a display manager login, though. With a DM login, you have a bunch of sh scripts (which aren't even login shells) that can export variables but *not* functions. You don't get a bash shell until you actually open a terminal. None of your shell's dot files are used at all, until you open a terminal, and then *only* .bashrc gets read (unless you configure your terminal to run a login shell -- which some people do, just to make things even *more* difficult to explain and diagnose). > - but alas, XFCE would not propagate shell functions It's not XFCE per se. It's the fact that a display manager was used for the initial login. Even if you configure it to run a single gigantic xterm and nothing else. On Wed, Jul 08, 2020 at 08:24:56AM +0300, Andrei POPESCU wrote: > On Mi, 08 iul 20, 10:44:39, Zenaan Harkness wrote: > > - so try somewhere in the session startup apps - nope, courdn't > > figure it out at least > > For Debian you want ~/.xsessionrc Do note, as I mentioned on the wiki, that ~/.xsessionrc is read by a POSIX shell, and you can't use bashisms in it. unicorn:~$ grep -r USERXSESSIONRC /etc/X11 /etc/X11/Xsession.d/40x11-common_xsessionrc:if [ -r "$USERXSESSIONRC" ]; then /etc/X11/Xsession.d/40x11-common_xsessionrc: . "$USERXSESSIONRC" /etc/X11/Xsession:USERXSESSIONRC=$HOME/.xsessionrc See, the ~/.xsessionrc file is dotted in (by a POSIX shell). It's not executed as a program. So you can't just change the shebang on it, or anything like that. If the goal is to export bash functions into the environment for the entire session, honestly, sticking with console + startx is the best approach.