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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user