unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Malte Frank Gerdes <malte.f.gerdes@gmail.com>
To: Saku Laesvuori <saku@laesvuori.fi>
Cc: 66168@debbugs.gnu.org
Subject: bug#66168: zsh home service breaks guix shell via ssh
Date: Sun, 24 Sep 2023 20:48:44 +0200	[thread overview]
Message-ID: <86cyy75rg1.fsf@gmail.com> (raw)
In-Reply-To: <gvkz2lwzlrs7nokt6fjfy45p4gulpt6xss54dxfvkd7gjmp2tm@jwb7hnnfnj3i>


Saku Laesvuori <saku@laesvuori.fi> writes:

> [[PGP Signed Part:Undecided]]
> On Sat, Sep 23, 2023 at 12:19:10PM +0200, Malte Frank Gerdes wrote:
>> I noticed that after connecting via ssh the profile that gets created
>> when doing `guix shell' is not sourced, therefore the environment
>> variables are not correct.  This seems to be because guix home inserts
>> "[ -n \"$SSH_CLIENT\" ] && source /etc/profile" into the zshenv file.  I
>> assume this is meant to ensure that /etc/profile is sourced because ssh
>> does not start a login shell?
>
> That is correct, it was added in <https://issues.guix.gnu.org/64765>
> because commands like `ssh host -- cmd` (and commands depending on ssh
> such as `git pull/push`) failed.
Ah, i didn't think about this use case.

>> Anyway, removing that line makes everything work normally.  So am i
>> doing it wrong or is this actually unnecessary?
>
> I can reproduce this:
>
> ```
> $ ssh localhost
> $ guix shell gnuplot
> $ gnuplot
> zsh: command not found: gnuplot
> ```
>
> However (still within the ssh session)
>
> ```
> $ guix shell gnuplot -- gnuplot
> [gnuplot opens as expected]
> ```
>
> and weirdly enough
>
> ```
> $ guix shell --check gnuplot
> guix shell: checking the environment variables visible from shell '/gnu/store/i4rj0banq044423if5xwb3df723g14r9-zsh-5.9/bin/zsh'...
> guix shell: All is good!  The shell gets correct environment variables.
> $ gnuplot
> zsh: command not found: gnuplot
> ```
>
> I don't really know what is happening here. Why does it work when
> running the command directly and why does `guix shell --check` claim
> that everything is correct when clearly something is wrong? If I
> understand correctly `.zshenv` should be sourced in all these cases but
> for some reason the problems only occur in some of them.
>
> Any ideas?
My guess would be that sourcing /etc/profile should only happen once,
but the SSH_CLIENT variable is inherited to the child shell which
evaluates zshenv which in turn sources /etc/profile because SSH_CLIENT
has non-zero length.  So /etc/profile is sourced twice.

This is just a wild guess though.


mfg²




  reply	other threads:[~2023-09-24 18:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-23 10:19 bug#66168: zsh home service breaks guix shell via ssh Malte Frank Gerdes
2023-09-24 15:27 ` Saku Laesvuori via Bug reports for GNU Guix
2023-09-24 18:48   ` Malte Frank Gerdes [this message]
2023-09-25 14:56     ` Saku Laesvuori via Bug reports for GNU Guix

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86cyy75rg1.fsf@gmail.com \
    --to=malte.f.gerdes@gmail.com \
    --cc=66168@debbugs.gnu.org \
    --cc=saku@laesvuori.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).