Как я могу определить, превышает ли мой текущий сеанс PowerShell S SH? - PullRequest
1 голос
/ 12 марта 2020

Я работаю над настройкой моей подсказки PowerShell и хочу, чтобы она отображала специальный значок, когда текущий сеанс превышает S SH.

В частности, я хочу, чтобы у моего индикатора подсказки был маленький самолет :

c:\foo> # connected to my local machine
c:\foo>ssh remote
#...
c:\bar✈> # connected to remote!

Я использую одно и то же приглашение между моими локальными и удаленными машинами.

Как я могу определить, является ли данный сеанс удаленным / более S SH?

1 Ответ

1 голос
/ 12 марта 2020

У меня нет общего решения для какого-либо удаленного соединения , но если у вас есть удаленный S SH сеанс, переменные окружения SSH_CLIENT и SSH_CONNECTION будут быть установленным:

>dir env:*ssh*

Name                           Value
----                           -----
SSH_CONNECTION                 [redacted]
SSH_CLIENT                     [redacted]

Таким образом, вы можете просто проверить наличие этой переменной в вашей подсказке!

function Test-IsRemote {
    [CmdletBinding()]
    param()

    return Test-Path env:SSH_CLIENT;
}

# ... in your prompt:
if (Test-IsRemote) {
    Microsoft.PowerShell.Utility\Write-Host "✈ " -NoNewLine -ForegroundColor "DarkGray"
}

# ...
Microsoft.PowerShell.Utility\Write-Host ">" -NoNewLine -ForegroundColor "DarkGray"

На это есть ссылка в руководстве по настройке вашей подсказки ZSH :

Примечание: вы можете утверждать, что имя хоста в приглашении полезно, когда у вас часто есть несколько терминалов windows, открытых для разных хостов. Это верно, но тогда подсказка определяется удаленной оболочкой и ее файлами конфигурации на удаленном хосте. В своем файле конфигурации вы можете проверить, установлена ​​ли переменная SSH_CLIENT, и показать другое приглашение для удаленных сеансов. Существуют и другие способы отображения хоста в сеансах удаленной оболочки, например, в строке заголовка окна терминала или с разными цветами фона окна.

...