Java JSch使用Unix远程服务器环境变量

Java JSch使用Unix远程服务器环境变量,java,environment-variables,jsch,Java,Environment Variables,Jsch,我正在使用JSch将java连接到远程unix服务器。下一步是运行shell脚本(.sh),该脚本使用一些内部环境变量 直接从终端执行shell脚本可以很好地工作,但是通过JSch从java程序调用它并不能识别这些变量。我该如何解决这个问题。对Java缺乏经验。发布示例代码- JSch jsch = new JSch(); Session session = jsch.getSession("username", "server", 22); UserInfo ui =

我正在使用JSch将java连接到远程unix服务器。下一步是运行shell脚本(.sh),该脚本使用一些内部环境变量

直接从终端执行shell脚本可以很好地工作,但是通过JSch从java程序调用它并不能识别这些变量。我该如何解决这个问题。对Java缺乏经验。发布示例代码-

    JSch jsch = new JSch();
    Session session = jsch.getSession("username", "server", 22);
    UserInfo ui = new SftpUserInfo();
    session.setUserInfo(ui);
    session.setPassword("mypass");
    session.connect();

    ChannelExec channelExec = (ChannelExec)session.openChannel("exec");

    InputStream in = channelExec.getInputStream();


    channelExec.setCommand("sh /filePath/myShellScript.sh");
    channelExec.connect();

    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;

    while ((line = reader.readLine()) != null)
    {
        System.out.println(line);
    }
PS:环境变量设置在用户根文件夹(/home/username/)中的“.profile”处

谢谢


Arya

我使用JSch执行存储在服务器上的jar。该jar使用允许修改环境变量的ProcessBuilder类。例如:

ProcessBuilder pb = new ProcessBuilder("sh /filePath/myShellScript.sh");
Map<String, String> env = pb.environment();
env.put("profile","/home/username/");
ProcessBuilder pb=newprocessbuilder(“sh/filePath/myShellScript.sh”);
Map env=pb.environment();
环境put(“profile”、“/home/username/”;

你找到这个问题的解决方案了吗?@Neron你找到这个问题的解决方案了吗?