Subject: Re: bug#27386: offloading documentation and env

From: [email-masked] (Ludovic Courtès)
Date: Tue, 27 Jun 2017 21:38:39 +0200

ng0 <[email-masked]> skribis:

> Ludovic Courtès transcribed 2.8K bytes:

[...]

>> >> The test is to run something like:
>> >> 
>> >>   $ ssh localhost env |grep GUILE_
>> >>   GUILE_LOAD_COMPILED_PATH=/home/ludo/.guix-profile/lib/guile/2.2/site-ccache:/home/ludo/.guix-profile/share/guile/site/2.2:/run/current-system/profile/lib/guile/2.2/site-ccache:/run/current-system/profile/share/guile/site/2.2
>> >>   GUILE_LOAD_PATH=/home/ludo/.guix-profile/share/guile/site/2.2:/run/current-system/profile/share/guile/site/2.2
>> >> 
>> >> and you should see /run/current-system/profile/share/guile/site/2.2.  If
>> >> not, you’ll have to add it somehow.
>> 
>> What does the above give for you?
>> 
>> HTH,
>> Ludo’.
>
> This is issued from computer A (abyayala) to computer B (shadownet).
>
> user@abyayala ~$ ssh shadownet env |grep GUILE_
> GUILE_LOAD_COMPILED_PATH=/gnu/store/m91mxi586pi2qshzys9zfsmzij8nf547-profile/lib/guile/2.2/site-ccache:/gnu/store/m91mxi586pi2qshzys9zfsmzij8nf547-profile/share/guile/site/2.2
> GUILE_LOAD_PATH=/gnu/store/m91mxi586pi2qshzys9zfsmzij8nf547-profile/share/guile/site/2.2

The problem here is that
/run/current-system/profile/share/guile/site/2.2, which is where the
Guix modules are on GuixSD as I wrote above, is missing from the search
path.

The session started when you run “ssh shadownet env” does not spawn a
login shell; thus ~/.profile and similar are *not* sourced.  I’m using
Bash, so on my accounts, I have this in .bashrc (‘.bashrc’ is for
non-login shells):

--8<---------------cut here---------------start------------->8---
if [ -n "$SSH_CLIENT" -a -z "`type -P cat`" ]
then
    # We are being invoked from a non-interactive SSH session
    # (as in "ssh host command") but 'cat' cannot be found
    # in $PATH.  Source /etc/profile so we get $PATH and other
    # essential variables.
    source /etc/profile
fi
--8<---------------cut here---------------end--------------->8---

That way, “ssh HOST COMMAND” effectively gets the same environment as a
login shell.

If you’re using a different shell, then make sure its startup file does
something similar.

HTH!

Ludo’.