summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorJohn Kehayias <john.kehayias@protonmail.com>2023-01-05 16:06:19 -0500
committerJohn Kehayias <john.kehayias@protonmail.com>2023-01-15 17:54:14 -0500
commit3bfbfa2946aebb7f68c8027ae80f272f6915c94f (patch)
treec89947b4f18fbba364749153e90155589196c7c6 /guix
parenta5b914156eda876000ecab29ebe855080f8d8ff6 (diff)
downloadguix-patches-3bfbfa2946aebb7f68c8027ae80f272f6915c94f.tar
guix-patches-3bfbfa2946aebb7f68c8027ae80f272f6915c94f.tar.gz
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. * tests/guix-environment-container.sh: Test that FHS directories are in $PATH in the container and that $PATH can be preserved. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/environment.scm11
1 files changed, 7 insertions, 4 deletions
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index c7fd8fd340..46435ae48e 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -1,8 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2018 David Thompson <davet@gnu.org>
-;;; Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mike Gerwitz <mtg@gnu.org>
-;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -475,10 +475,13 @@ cache."
(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"
+ (if (getenv "PATH")
+ (string-append ":" (getenv "PATH"))
+ "")))
(invoke "ldconfig" "-X"))
(apply execlp program program args))
(lambda _