C# SSH Remote在Oracle Linux 7上获取更少的环境变量

C# SSH Remote在Oracle Linux 7上获取更少的环境变量,c#,linux,oracle,ssh,environment-variables,C#,Linux,Oracle,Ssh,Environment Variables,我正在通过SSH访问Oracle Linux Server 7并成功连接。 每当我想通过powershell获取所有环境变量时,它都可以正常工作,但是当我使用(.NET SSH Library)时,我得到的环境变量就更少了 这是我的代码 static void Main(string[] args) { var host = $"host"; var user = "username"; var pwd = "passwo

我正在通过SSH访问Oracle Linux Server 7并成功连接。 每当我想通过powershell获取所有环境变量时,它都可以正常工作,但是当我使用(.NET SSH Library)时,我得到的环境变量就更少了

这是我的代码

static void Main(string[] args)
{
    var host = $"host";
    var user = "username";
    var pwd = "password";
 
    ConnectionInfo ConnNfo = new ConnectionInfo(host, 22, user,
        new AuthenticationMethod[]{
            // Pasword based Authentication
            new PasswordAuthenticationMethod(user,pwd),
            new PrivateKeyAuthenticationMethod("rsa.key"),

        }
    );
    using (var sshclient = new SshClient(ConnNfo))
    {
        sshclient.Connect();
        if (sshclient.IsConnected)
        {
            RunCommand(sshclient, "printenv");
            sshclient.Disconnect();
        }

    }

    Console.ReadKey();
}

我在这方面尝试了一些解决方案,但没有得到任何结果。那么在这种情况下我能做什么呢?

ssh登录似乎没有加载用户配置文件

通过首先执行概要文件,我获得了完整的环境变量
printenv

//RunCommand(sshclient,“printenv”);
var result=sshclient.RunCommand(“…bash_profile&&printenv”);
Console.WriteLine((result.result));

最可能的解释是,当.NET程序正在创建非交互式会话时,通过powershell连接正在创建交互式会话(您没有显示您运行的命令,因此这是一个有根据的猜测)。如果从powershell执行
ssh$host printenv
,您是否看到与运行.NET程序时相同的环境变量集?如果是的话,那就是原因。@KurtisRader我知道由此引起的原因,但我如何解决这个问题?你最初的问题很清楚地表明你不知道行为差异的原因。您可以通过配置.NET程序以建立交互式SSH会话来“解决此问题”,或者重新配置远程shell以为非交互式shell设置所需的环境变量,或者配置SSH以将所需的环境变量从客户端传递到服务器机。