diff options
-rw-r--r-- | guix/scripts/environment.scm | 11 | ||||
-rw-r--r-- | tests/guix-environment-container.sh | 13 |
2 files changed, 19 insertions, 5 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 _ diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh index 0306fc1744..0475405a89 100644 --- a/tests/guix-environment-container.sh +++ b/tests/guix-environment-container.sh @@ -1,6 +1,7 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2015 David Thompson <davet@gnu.org> -# Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> +# Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com> +# Copyright © 2023 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -242,6 +243,16 @@ guix shell -CF --bootstrap guile-bootstrap glibc \ 0 1))' +# Test that $PATH inside the container includes the FHS directories. +guix shell -CF coreutils -- env | grep ^PATH=/bin:/usr/bin:/sbin:/usr/sbin.* + +# Make sure '--preserve' is honored for $PATH, which the '--emulate-fhs' +# option modifies. We can't (easily) check the whole $PATH as it will differ +# inside and outside the container, so just check our test $PATH is still +# present. See <https://issues.guix.gnu.org/60566>. +PATH=/foo $(type -P guix) shell -CF -E ^PATH$ coreutils \ + -- env | grep ^PATH=.*:/foo + # '--symlink' works. echo "TESTING SYMLINK IN CONTAINER" guix shell --bootstrap guile-bootstrap --container \ |