PowerShell은 프롬프트에서 $env:USERPROFILE을 바꿉니다.

PowerShell은 프롬프트에서 $env:USERPROFILE을 바꿉니다.

PS 5.1 프롬프트를 표시하려고 합니다.

~\Documents

대신에

C:\Users\USER1\Documents

하지만 "구성 요소" 중 하나를 시도하는 동안 오류가 발생합니다.

> $($executionContext.SessionState.Path.CurrentLocation) -replace $env:USERPROFILE, '~'
The regular expression pattern C:\Users\USER1 is not valid.
At line:1 char:3
...

이것을 포함시키겠다는 뜻이다

$ESC = [char]27
$BLUE="$ESC[1;34m"
$RESET="$ESC[0m"
function prompt  
{  
    $cwd = $($executionContext.SessionState.Path.CurrentLocation) ;
    # $my_new_var=USE THE REPLACING COMMAND
    "$BLUE$my_new_var$('>' * ($nestedPromptLevel + 1)) $RESET"  
}

$env:USERPROFILE이것이 작동하려면 어떻게 탈출해야합니까 ? 그게 내 내에서 작동할까요 prompt?

답변1

이렇게 하면 원하는 대체 작업이 수행됩니다.

($executionContext.SessionState.Path.CurrentLocation).ToString().Replace($env:USERPROFILE, '~')

답변2

어쩌면 형식 문자열을 사용하여 Regex 교체 내에서 변수를 확장하고 싶을 수도 있습니다.

$($executionContext.SessionState.Path.CurrentLocation) -replace ("{0}" -f $env:USERPROFILE), '~'

답변3

$HOME 디렉터리 위로 이동하면 문제가 발생할 수 있습니다. 항상 경로의 마지막 요소를 원하는 경우 다음 중 하나를 사용합니다.

'~\{0} -f ($executionContext.SessionState.Path.CurrentLocation).Path.Split('\')[-1]
'~\{0}' -f (Split-Path ($executionContext.SessionState.Path.CurrentLocation).Path -Leaf)

관련 정보