Ubuntu 上的 PowerShell Core 6.0 中自定义提示打印两次
Custom prompt prints twice in PowerShell Core 6.0 on Ubuntu
我的 $PROFILE 中有一个自定义 PowerShell 提示函数,它在 Windows 上工作正常 PS 5.1 和 PS Core 6.0,但不适用于 PS Ubuntu 17.04.
上的核心 6.0
On Ubuntu 提示重复:
为了让事情更有趣,当我开始输入时,光标移动并且命令文本出现在我期望的位置,如果输出没有重复的话:
命令还将在重复的提示输出之上打印输出。
$PSVersionTable
的输出:
Name Value
---- -----
PSVersion 6.0.0
PSEdition Core
GitCommitId v6.0.0
OS Linux 4.10.0-40-generic #44-Ubuntu SMP Thu Nov 9 14:49:09 UTC 2017
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
生成提示的函数:
function global:prompt {
$realLASTEXITCODE = $LASTEXITCODE
Write-Host
Write-Host (Get-Date -Format:'o') -ForegroundColor:DarkGray
Write-Host "PS " -NoNewline -ForegroundColor:Green
Write-Host $pwd.ProviderPath -NoNewline
# Write-VcsStatus
Write-Host
$global:LASTEXITCODE = $realLASTEXITCODE
return "> "
}
我是 Linux 的新手,我对可能导致这种奇怪行为的原因的搜索到目前为止没有结果。任何帮助将不胜感激。
这是 Core 附带的 PSReadLine 版本中的错误。这是 issue
您可以安装 2.0 的预发布版本。
Install-Module PSReadLine -RequiredVersion 2.0.0-beta1 -AllowPrerelease -Force
如果您收到关于 -AllowPrerelease
的错误,您还需要更新 PowerShellGet
。
Install-Module PowerShellGet -RequiredVersion 1.6.0 -Force
我的 $PROFILE 中有一个自定义 PowerShell 提示函数,它在 Windows 上工作正常 PS 5.1 和 PS Core 6.0,但不适用于 PS Ubuntu 17.04.
上的核心 6.0On Ubuntu 提示重复:
为了让事情更有趣,当我开始输入时,光标移动并且命令文本出现在我期望的位置,如果输出没有重复的话:
$PSVersionTable
的输出:
Name Value
---- -----
PSVersion 6.0.0
PSEdition Core
GitCommitId v6.0.0
OS Linux 4.10.0-40-generic #44-Ubuntu SMP Thu Nov 9 14:49:09 UTC 2017
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
生成提示的函数:
function global:prompt {
$realLASTEXITCODE = $LASTEXITCODE
Write-Host
Write-Host (Get-Date -Format:'o') -ForegroundColor:DarkGray
Write-Host "PS " -NoNewline -ForegroundColor:Green
Write-Host $pwd.ProviderPath -NoNewline
# Write-VcsStatus
Write-Host
$global:LASTEXITCODE = $realLASTEXITCODE
return "> "
}
我是 Linux 的新手,我对可能导致这种奇怪行为的原因的搜索到目前为止没有结果。任何帮助将不胜感激。
这是 Core 附带的 PSReadLine 版本中的错误。这是 issue
您可以安装 2.0 的预发布版本。
Install-Module PSReadLine -RequiredVersion 2.0.0-beta1 -AllowPrerelease -Force
如果您收到关于 -AllowPrerelease
的错误,您还需要更新 PowerShellGet
。
Install-Module PowerShellGet -RequiredVersion 1.6.0 -Force