Для будущих читателей : Как показало обсуждение, причина была в том, что JSch подключился к другому серверу, чем обычный SSH (и у одного из них был файл, а у другого - нет). Я все еще оставляю здесь свой ответ, так как он содержит некоторые полезные (я думаю) идеи отладки для подобных проблем. Но помните: Сначала убедитесь, что вы подключаетесь к нужному компьютеру .
В принципе, это способ сделать это, если вы используете JSch. Если вы получите сообщение об ошибке bash: myapplication: command not found
, это означает, что в пути не было двоичного файла myapplication
. (И вы получите то же сообщение об ошибке при использовании простой командной строки ssh
.)
Попробуйте which myapplication
(или type myapplication
) в вашей обычной оболочке, чтобы увидеть, где она находится. Затем используйте echo $PATH >&2
в качестве команды, чтобы увидеть путь, используемый вашим каналом exec. Может быть, это отличается от того, когда выполняется из вашей обычной оболочки. Если это так, либо используйте полный путь в имени команды, либо исправьте настройки. (Смотрите, если путь задан в ~/.bashrc
, ~/.profile
, /etc/profile
или /etc/bash.bashrc
. Только некоторые из этих файлов будут выполняться при интерактивном входе в систему, а не при неинтерактивном входе - и я думаю, что канал exec
будет не интерактивным, я думаю .)