【发布时间】:2017-05-18 22:13:23
【问题描述】:
我想在 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 的隐式解决方案不起作用?
【问题讨论】:
-
您真的在使用
_channel.setEnv("LD_LIBRARY_PATH" = "/my/add/path:$LD_LIBRARY_PATH");吗?这看起来像一个语法错误。 -
Paulo:感谢您的提示,这只是此条目中的输入错误。我的源代码在语法上是正确的。
-
是的,其他 echo 命令也可以。