On Wed, Jan 04, 2023 at 11:33 PM, jman wrote: > Hello, > > When emulating a FHS I observe that env vars seems to be not preserved. > Example, > the following command will not preserve $PATH: > > guix shell --container --emulate-fhs --preserve='^PATH$' > > When creating a container *without* emulating a FHS, env vars are available, > example: > > guix shell --container --preserve='^PATH$' > > Pastebin log of a sample of this behaviour: > https://paste.sr.ht/~jman/65e7f96c445504e11f55595b237280e0c1e3ad34 > > ref: https://lists.gnu.org/archive/html/help-guix/2023-01/msg00002.html > > Thanks for an opinion on this
Thanks for reporting, I can confirm this behavior. Here is a patch for this where the FHS directories are added to the current value of $PATH. I believe this should in general be fine since this is the last step before actually calling the command given to 'guix shell' and thus $PATH has been set or preserved as needed already. CC'ing Ludo as most familiar with this code. Anything we should be aware of here? This change to $PATH in the first place wasn't strictly needed ('guix shell' already has the profile bin directory) but I thought made sense to make it look most like FHS. Thanks! John
From 57cdc3a8f9c6451aaf17f1fafae0bcf29faeea03 Mon Sep 17 00:00:00 2001 From: John Kehayias <john.kehay...@protonmail.com> Date: Thu, 5 Jan 2023 16:06:19 -0500 Subject: [PATCH] * environment: Fix '--emulate-fhs' option overriding $PATH. Fixes <https://issues.guix.gnu.org/60566> where even if "--preserve='^PATH$'" was passed to 'guix shell' it would be replaced by just the FHS directories when '--emulate-fhs' was also set. * gnu/scripts/environment.scm (launch-environment): Add the FHS directories to $PATH rather than overriding $PATH completely. --- guix/scripts/environment.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index c7fd8fd340..20fa5850c4 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -475,10 +475,11 @@ (define* (launch-environment command profile manifest (catch 'system-error (lambda () (when emulate-fhs? - ;; When running in a container with EMULATE-FHS?, override $PATH + ;; When running in a container with EMULATE-FHS?, augment $PATH ;; (optional, but to better match FHS expectations), and generate ;; /etc/ld.so.cache. - (setenv "PATH" "/bin:/usr/bin:/sbin:/usr/sbin") + (setenv "PATH" (string-append "/bin:/usr/bin:/sbin:/usr/sbin:" + (getenv "PATH"))) (invoke "ldconfig" "-X")) (apply execlp program program args)) (lambda _ -- 2.38.1