我想在 jsch 的 ChannelExec
(不是 ChannelShell
)中运行远程命令。显然没有加载环境变量,但我的命令需要它们:
_channel.setCommand("source /etc/bash.bashrc; source ~/.bashrc; echo $LD_LIBRARY_PATH");
_channel.connect();
不返回任何内容,尽管 LD_LIBRARY_PATH
在我的 ~/.bashrc
中设置。
_channel.setEnv("LD_LIBRARY_PATH", "/my/add/path:$LD_LIBRARY_PATH");
_channel.setCommand("echo $LD_LIBRARY_PATH");
_channel.connect();
也不起作用——echo
命令仍然没有输出。
知道哪里出了问题吗?我到底什么时候必须调用 setEnv
?在执行 connect()
之前还是之后?为什么通过 source
的隐式解决方案不起作用?
最佳答案
我现在找到了解决方法,但这不是解决方案。我的猜测是,无论是在 JSch 中还是在 Open SSH 服务器中,setEnv()
都是错误的。
解决方法:
_channel.setCommand("export LD_LIBRARY_PATH=\"foo\" && echo $LD_LIBRARY_PATH");
关于java - 在 jsch ChannelExec 上设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366914/