diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index fa7c8483d7..a21c864f12 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -9601,7 +9601,8 @@ async fn load_shell_environment(dir: &Path) -> Result> { }); let command = format!( - "cd {dir:?};{} echo {marker}; /usr/bin/env -0; exit 0;", + "cd '{}';{} echo {marker}; /usr/bin/env -0; exit 0;", + dir.display(), additional_command.unwrap_or("") ); diff --git a/crates/zed/src/main.rs b/crates/zed/src/main.rs index 23f2aa4c53..d42fadb69c 100644 --- a/crates/zed/src/main.rs +++ b/crates/zed/src/main.rs @@ -848,7 +848,7 @@ async fn load_login_shell_environment() -> Result<()> { // in home directory. let shell_cmd_prefix = std::env::var_os("HOME") .and_then(|home| home.into_string().ok()) - .map(|home| format!("cd {home};")); + .map(|home| format!("cd '{home}';")); // The `exit 0` is the result of hours of debugging, trying to find out // why running this command here, without `exit 0`, would mess