Мое приглашение в PowerShell выглядит так:
PS>dir
Я изменил приглашение, чтобы не отображать путь, изменив файл профиля. Я хочу включить пробел после >. Как это сделать?
Я попытался добавить пробел после отображаемого текста в файле профиля.
function prompt{
$p = -path
"$p> "
}
Я надеялся, что пробел после p> поможет, но это не так. Также не добавляется \t.
Если вы хотите отображать только «PS>», вы можете просто использовать:
function prompt {"PS> "}
Если вы хотите отображать только текущую папку без полного пути, то это будет лучшим вариантом:
function prompt {
$p = Split-Path -Path (Get-Location) -Leaf
"$p> "
}
Полезный ответ Якобба предлагает эффективное решение.
Что касается того, что вы пробовали:
$p = -path
вызывает завершающую ошибку (оператор-) (PowerShell ищет исполняемый файл с дословным именем -path
и терпит неудачу).
Когда завершающая ошибка (завершающая оператор или завершающий скрипт, например, сгенерированная с помощью throw
) возникает в пользовательской функции приглашения, PowerShell возвращается к встроенному приглашению по умолчанию, которое имеет вид PS>
(т. е. без пробела после >
) - это то, что вы видели.
prompt
(например, Get-Item NoSuchFile
) возникает непрерывная ошибка, PowerShell ее игнорирует.Результат:
Если у вас есть пользовательская функция prompt
, но приглашение неожиданно отображается как PS>
, это означает следующее:
Чтобы устранить неполадки в вашей пользовательской функции, вызовите ее напрямую (prompt
или & prompt
), и в этом случае возникнут любые ошибки.
Если есть вероятность того, что в вашей пользовательской функции может возникнуть завершающая ошибка (что кажется маловероятным), обработайте ее с помощью оператора try { ... } catch { ... } и убедитесь, что ваша функция всегда приводит к успеху. -выход потока.
[1] If you write to otheroutput streams except the error stream, e.g., via Write-Host
, that output does print, but in addition to (before) the built-in prompt, PS>
.