Полагаю, вы хотите, чтобы команды влияли на последующие команды.
Но SshClient.CreateCommand
использует SSH-канал "exec" для выполнения команды.Это означает, что каждая команда выполняется в изолированной оболочке и не влияет на другие команды.
Если вам нужно выполнять команды так, чтобы предыдущие команды влияли на более поздние команды (например, на изменение рабочего каталогаили установка переменной среды), вы должны выполнить все команды в одном канале.Для этого используйте соответствующую конструкцию серверной оболочки.В большинстве систем вы можете использовать точки с запятой:
Console.WriteLine(cSSH.CreateCommand("pwd ; cdr abc-log ; pwd").Execute());
На * nix-серверах вы также можете использовать &&
, чтобы следующие команды выполнялись только при успешном выполнении предыдущих команд:
Console.WriteLine(cSSH.CreateCommand("pwd && cdr abc-log && pwd").Execute());