util: Respect user-defined SHELL environment variable (#40181)

Fix issue where Zed would unconditionally override user's custom shell
with system default from passwd entry.

Closes https://github.com/zed-industries/zed/issues/40171

Release Notes:

- Fix issue where Zed would unconditionally override user's custom shell
with system default from passwd entry.

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
This commit is contained in:
Xiaobo Liu
2025-10-14 15:48:24 +00:00
committed by GitHub
parent fc2b3b2e45
commit 9d23527663
+5 -1
View File
@@ -279,7 +279,11 @@ fn load_shell_from_passwd() -> Result<()> {
);
let shell = unsafe { std::ffi::CStr::from_ptr(entry.pw_shell).to_str().unwrap() };
if env::var("SHELL").map_or(true, |shell_env| shell_env != shell) {
let should_set_shell = env::var("SHELL").map_or(true, |shell_env| {
shell_env != shell && !std::path::Path::new(&shell_env).exists()
});
if should_set_shell {
log::info!(
"updating SHELL environment variable to value from passwd entry: {:?}",
shell,