Java JSch:如何在ChannelShell上为远程主机设置环境变量?

Java JSch:如何在ChannelShell上为远程主机设置环境变量?,java,ssh,jsch,Java,Ssh,Jsch,我正在使用JCraft中的JSch和JCTerm库进行实验。虽然主体终端仿真工作得很好,但我在向远程主机获取环境变量时遇到了一些问题 这是一个代码片段,用于创建到远程主机的会话,并打开一个提供输入和输出流的通道 JSchSession session=JSchSession.getSession(“root”、“mypasswd”、“targethost”、22、userInfo、null); Channel-Channel=session.getSession().openChannel(“s

我正在使用JCraft中的JSch和JCTerm库进行实验。虽然主体终端仿真工作得很好,但我在向远程主机获取环境变量时遇到了一些问题

这是一个代码片段,用于创建到远程主机的会话,并打开一个提供输入和输出流的通道

JSchSession session=JSchSession.getSession(“root”、“mypasswd”、“targethost”、22、userInfo、null);
Channel-Channel=session.getSession().openChannel(“shell”);
(ChannelShell)channel.setEnv(“LC_ALL”、“en_US”);
channel.connect();
//创建JCTermSwing终端仿真GUI
setEnv(…)
似乎没有效果,因为环境变量
LC_ALL
未在远程主机上设置

我想要实现的目标是在远程主机上将字符编码设置为“en_US”。这将解决JSch似乎无法正确处理德国UMLAUT这一事实


有人知道如何设置变量吗?我遗漏了什么吗?

如何检查LC_ALL是否未设置?当JCTermSwing类呈现的终端仿真最终显示时,我可以发出
locale
命令。在其输出中,LC_ALL没有任何值。和德语umlauts显示为中文字符。也许您应该检查环境变量是否通过较不复杂的测试导出(尝试
echo$LC_ALL
System.getEnv(“LC_ALL”)
据我所知,环境变量不会在多个ssh会话之间共享。但在终端仿真启动且变量为空时,我也执行了
echo$LC\u ALL
。我没有获得
System.getEnv(“LC\u ALL”)
part。我不在远程主机上运行Java代码。如何检查LC_ALL是否未设置?当JCTermSwing类呈现的终端仿真最终显示时,我可以发出
locale
命令。在其输出中,LC_ALL没有值。德语umlauts显示为中文字符。也许您应该检查envi使用不太复杂的测试导出环境变量(尝试
echo$LC\u ALL
System.getEnv(“LC\u ALL”)
据我所知,环境变量不会在多个ssh会话之间共享。但在终端仿真启动且变量为空时,我也执行了
echo$LC\u ALL
。我没有获得
System.getEnv(“LC\u ALL”)
部分。我没有在远程主机上运行Java代码。