diff --git a/fish-rust/src/expand.rs b/fish-rust/src/expand.rs index 7359899d3..60c8aba5b 100644 --- a/fish-rust/src/expand.rs +++ b/fish-rust/src/expand.rs @@ -307,6 +307,11 @@ pub fn replace_home_directory_with_tilde(s: &wstr, vars: &dyn Environment) -> WS if result.starts_with("/"L) { let mut home_directory = "~"L.to_owned(); expand_tilde(&mut home_directory, vars); + // If we can't get a home directory, don't replace anything. + // This is the case e.g. with --no-execute + if home_directory.is_empty() { + return result; + } if !home_directory.ends_with("/"L) { home_directory.push('/'); } diff --git a/tests/checks/no-execute.fish b/tests/checks/no-execute.fish index 93241c58a..1e5f54e01 100644 --- a/tests/checks/no-execute.fish +++ b/tests/checks/no-execute.fish @@ -23,5 +23,14 @@ echo "begin; echo oops" | $fish -n echo $status #CHECK: 127 +echo "begin" > broken +$fish -n $PWD/broken +#CHECKERR: /{{.*}}broken (line 1): Missing end to balance this begin +#CHECKERR: begin +#CHECKERR: ^~~~^ +#CHECKERR: warning: Error while reading file /{{.*}}broken + +rm broken + # Littlecheck assumes a status of 127 means the shebang was invalid. exit 0