aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/remote/unix.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/remote/unix.rs b/src/remote/unix.rs
index 813091ba..6fe927c1 100644
--- a/src/remote/unix.rs
+++ b/src/remote/unix.rs
@@ -842,6 +842,16 @@ fn remote_binary_on_path_any(
remote_herdr: &RemoteHerdr,
) -> io::Result<Option<RemoteHerdr>> {
let output = ssh.user_shell_output("command -v herdr")?;
+ if output.status.success() {
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ if let Some(candidate) = remote_herdr_from_path_discovery(remote_herdr, &stdout) {
+ return Ok(Some(candidate));
+ }
+ }
+
+ // Non-POSIX login shells such as xonsh reject `command -v`; retry through
+ // /bin/sh while retaining the login-shell probe for shell-initialized PATHs.
+ let output = ssh.sh_output("command -v herdr\n")?;
if !output.status.success() {
return Ok(None);
}