compatibility issue in environment-modules version 4.1.1-1

Gunnar Hjalmarsson gunnarhj at ubuntu.com
Wed May 8 00:40:38 UTC 2019


Hi again, Gösta!

I do not know how environment-modules is thought to work, but I did a 
small test to figure out the starting point with sourcing the 
/etc/profile.d/modules.sh file.

The first line in that file reads:

shell=$(/usr/bin/basename $(/bin/ps -p $$ -ocomm=))

I put that line in a temporary .sh file in /etc/profile.d on my machine, 
and let it print the contents of the $shell variable.

* Doing a graphical login using LightDM made $shell be assigned the
   value "lightdm-session" (the script which sources files in
   /etc/profile.d is /usr/sbin/lightdm-session).

* Doing a graphical login using GDM made $shell be assigned the value
   "Xsession" (the script which sources files in /etc/profile.d is
   /etc/gdm3/Xsession).

* Logging in to a TTY made $shell be assigned the value "bash".

This means that in case of graphical logins, modules.sh will always pick 
/usr/share/modules/init/sh for initialization. Its design is apparently 
not thought for the kind of sourcing by the display manager which 
happens on Ubuntu (and Ubuntu based) systems.

I suppose (not tested, though) that one way to work around this is to 
edit modules.sh so it sources /usr/share/modules/init/bash by default 
instead of /usr/share/modules/init/sh . Your initial solution, i.e. 
making the /bin/sh symlink point to bash instead of dash, is another way.

At this time I don't think that my initial theory (editing 
/usr/sbin/lightdm-session) makes a difference.

If you find that editing modules.sh as I suggested fixes the issue, I'd 
say that we have nailed the cause of the problem. modules.sh seems to be 
a Debian invention, so in that case I'd suggest that you report it 
there. Hopefully the Debian maintainer is willing to make modules.sh a 
bit more intelligent. :)

-- 
Gunnar Hjalmarsson
https://launchpad.net/~gunnarhj




More information about the Ubuntu-devel-discuss mailing list