guix_mirror_bot pushed a commit to branch master
in repository guix.
commit e778155f51e02e0a405fe74d3380e05cef49a2f8
Author: Ludovic Courtès <[email protected]>
AuthorDate: Thu Jul 17 17:33:21 2025 +0200
profiles: Preserve Bash ‘HIST’ variables.
This reduces the risk that, when using Bash, ‘guix shell --pure’ would
spawn an instance of Bash that would ignore the user’s history-related
settings.
It is not bulletproof though: these variables as shell variables that
need not be exported as environment variable. When they are not
exported, the user’s history-related settings would still be ignored.
* guix/profiles.scm (%precious-variables): Add HIST variables from Bash.
Change-Id: Id2898d67d2e70c083abbeacad3f0663940fb6789
---
guix/profiles.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/guix/profiles.scm b/guix/profiles.scm
index a1df7eb683..8cf4903fb8 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2024 Ludovic Courtès <[email protected]>
+;;; Copyright © 2013-2025 Ludovic Courtès <[email protected]>
;;; Copyright © 2013 Nikita Karetnikov <[email protected]>
;;; Copyright © 2014, 2016 Alex Kost <[email protected]>
;;; Copyright © 2015 Mark H Weaver <[email protected]>
@@ -2136,7 +2136,14 @@ already effective."
(define %precious-variables
;; Environment variables in the default 'load-profile' white list.
- '("HOME" "USER" "LOGNAME" "DISPLAY" "XAUTHORITY" "TERM" "TZ" "PAGER"))
+ '("HOME" "USER" "LOGNAME" "DISPLAY" "XAUTHORITY" "TERM" "TZ" "PAGER"
+
+ ;; These Bash variables (which can also be environment variables) must be
+ ;; preserved. Failure to preserve 'HISTSIZE', for instance, would lead
+ ;; Bash to use its default history size of 500 entries, possibly
+ ;; truncating the user's ~/.bash_history.
+ "HISTCONTROL" "HISTFILE" "HISTFILESIZE" "HISTIGNORE"
+ "HISTSIZE" "HISTTIMEFORMAT"))
(define (purify-environment white-list white-list-regexps)
"Unset all environment variables except those that match the regexps in