mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-18 09:46:07 +03:00
bash: preserve an existing ENV value (#7908)
This commit is contained in:
@ -26,6 +26,12 @@ if [ -n "$GHOSTTY_BASH_INJECT" ]; then
|
||||
builtin declare __ghostty_bash_flags="$GHOSTTY_BASH_INJECT"
|
||||
builtin unset ENV GHOSTTY_BASH_INJECT
|
||||
|
||||
# Restore an existing ENV that was replaced by the shell integration code.
|
||||
if [[ -n "$GHOSTTY_BASH_ENV" ]]; then
|
||||
builtin export ENV=$GHOSTTY_BASH_ENV
|
||||
builtin unset GHOSTTY_BASH_ENV
|
||||
fi
|
||||
|
||||
# Restore bash's default 'posix' behavior. Also reset 'inherit_errexit',
|
||||
# which doesn't happen as part of the 'posix' reset.
|
||||
builtin set +o posix
|
||||
|
@ -340,6 +340,11 @@ fn setupBash(
|
||||
}
|
||||
}
|
||||
|
||||
// Preserve an existing ENV value. We're about to overwrite it.
|
||||
if (env.get("ENV")) |v| {
|
||||
try env.put("GHOSTTY_BASH_ENV", v);
|
||||
}
|
||||
|
||||
// Set our new ENV to point to our integration script.
|
||||
var path_buf: [std.fs.max_path_bytes]u8 = undefined;
|
||||
const integ_dir = try std.fmt.bufPrint(
|
||||
@ -502,6 +507,22 @@ test "bash: HISTFILE" {
|
||||
}
|
||||
}
|
||||
|
||||
test "bash: ENV" {
|
||||
const testing = std.testing;
|
||||
var arena = ArenaAllocator.init(testing.allocator);
|
||||
defer arena.deinit();
|
||||
const alloc = arena.allocator();
|
||||
|
||||
var env = EnvMap.init(alloc);
|
||||
defer env.deinit();
|
||||
|
||||
try env.put("ENV", "env.sh");
|
||||
|
||||
_ = try setupBash(alloc, .{ .shell = "bash" }, ".", &env);
|
||||
try testing.expectEqualStrings("./shell-integration/bash/ghostty.bash", env.get("ENV").?);
|
||||
try testing.expectEqualStrings("env.sh", env.get("GHOSTTY_BASH_ENV").?);
|
||||
}
|
||||
|
||||
test "bash: additional arguments" {
|
||||
const testing = std.testing;
|
||||
var arena = ArenaAllocator.init(testing.allocator);
|
||||
|
Reference in New Issue
Block a user