@@ -71,6 +71,38 @@ fn normalize_env_vars(env_vars: &HashMap<String, String>) -> HashMap<String, Str
7171 env_vars. insert ( "TMP" . to_string ( ) , tmp) ;
7272 }
7373
74+ #[ cfg( not( windows) ) ]
75+ {
76+ // Some downstream dependencies require a HOME environment variable to be set.
77+ let home = std:: env:: var ( "HOME" ) . unwrap_or_default ( ) ;
78+ env_vars. insert ( "HOME" . to_string ( ) , home) ;
79+
80+ // We also need a PATH environment variable often times, we really want the most basic
81+ // thing we can get here but for now we'll pass in the currently-configured one.
82+ let path = std:: env:: var ( "PATH" ) . unwrap_or_default ( ) ;
83+ env_vars. insert ( "PATH" . to_string ( ) , path) ;
84+
85+ // On Unix systems, we also want to bring along the TMPDIR environment variable for temp
86+ // files.
87+ let tmpdir = std:: env:: var ( "TMPDIR" ) . unwrap_or_default ( ) ;
88+ env_vars. insert ( "TMPDIR" . to_string ( ) , tmpdir) ;
89+
90+ // Also other potentially-set temp vars. These may not be set.
91+ let temp = std:: env:: var ( "TEMP" ) . unwrap_or_default ( ) ;
92+ env_vars. insert ( "TEMP" . to_string ( ) , temp) ;
93+
94+ let tmp = std:: env:: var ( "TMP" ) . unwrap_or_default ( ) ;
95+ env_vars. insert ( "TMP" . to_string ( ) , tmp) ;
96+
97+ // Let's pass in TZ as well to propagate that to child processes.
98+ let tz = std:: env:: var ( "TZ" ) . unwrap_or_default ( ) ;
99+ env_vars. insert ( "TZ" . to_string ( ) , tz) ;
100+
101+ // And finally locale info, some peeps might need that.
102+ let lang = std:: env:: var ( "LANG" ) . unwrap_or_default ( ) ;
103+ env_vars. insert ( "LANG" . to_string ( ) , lang) ;
104+ }
105+
74106 env_vars
75107}
76108
0 commit comments