我在服务器上有一个bash脚本,其中包含一个不在默认路径上的命令。
如果我使用终端ssh到服务器并执行脚本,它可以正常工作(因为命令所在的目录被添加到路径中)。但是,如果我尝试通过JSch的CommandExec执行命令,我找不到"命令"错误。
是否有通过JSch执行脚本时将附加目录添加到路径?
请注意,我无法修改服务器上的脚本。它必须按原样运行。
myscript.sh
...
mycommand
...
JSch代码:
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.connect();
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand("/path/to/myscript.sh");
channelExec.connect();
谢谢
答案 0 :(得分:1)
我认为最简单的选择是更改脚本
<强> myscript.sh 强>
.
.
/full/path/to/mycommand
.
.
当您直接从shell执行脚本时,您的登录会导致PATH
生效,而当您从JSch
执行时,则不会出现这种情况。
一个快速谷歌给了我[ article ]值得一读。