diff --git a/src/main.zig b/src/main.zig index 5ab1085..980b9ba 100644 --- a/src/main.zig +++ b/src/main.zig @@ -608,10 +608,8 @@ pub fn main(init: std.process.Init) void { browser.loadDir(0); }, .shell => { - const shell = std.posix.getenvZ("NCDU_SHELL") orelse std.posix.getenvZ("SHELL") orelse "/bin/sh"; - var env = std.process.getEnvMap(allocator) catch unreachable; - defer env.deinit(); - ui.runCmd(&.{shell}, browser.dir_path, &env, false); + const shell = environ_map.get("NCDU_SHELL") orelse environ_map.get("SHELL") orelse "/bin/sh"; + ui.runCmd(&.{shell}, browser.dir_path, false); state = .browse; }, .delete => { diff --git a/src/ui.zig b/src/ui.zig index a3879e4..c105ad2 100644 --- a/src/ui.zig +++ b/src/ui.zig @@ -649,9 +649,11 @@ fn waitInput() void { } } -pub fn runCmd(cmd: []const []const u8, cwd: ?[]const u8, env: *std.process.EnvMap, reporterr: bool) void { +pub fn runCmd(cmd: []const []const u8, cwd: ?[]const u8, reporterr: bool) void { deinit(); defer init(); + var env = main.environ_map.clone(main.allocator) catch unreachable; + defer env.deinit(); // NCDU_LEVEL can only count to 9, keeps the implementation simple. if (env.get("NCDU_LEVEL")) |l|