[PowerShell(pwsh)] Prompt 이쁘게 바꾸기, 입출력 인코딩 변경 등 profile.ps1 활용하기

식빵·2023년 8월 12일
0

PowerShell

목록 보기
2/7
post-thumbnail

불편한 기본 Prompt

(Window) PowerShell 을 처음 켰을 때 보이는 working directory 경로는
그 길이가 길어짐에 따라 입력 커서가 지나치게 오른쪽에 치우쳐집니다.
처음에는 참을 만하지만, 점점 개발을 하다보면 이게 상당히 꼴보기 싫습니다.

출처: https://croccifix.io/configuring-the-powershell-prompt

이런 못생긴(?) prompt 가 아닌 자신만의 Custom Prompt 를 적용하기 위한
방법을 공유하려고 합니다.
(추가적으로 기본 입력/출력 인코딩도 겸사겸사 바꿔보고 말이죠)

지금부터 그 방법을 알아보죠.



Prompt 수정 방법

생각보다 방법은 간단합니다.
Custom Prompt 내용이 담긴 profile.ps1 이라는 파일을 PowerShell 에서
지정해주는 경로에 넣어주기만 하면 끝입니다. 이후에 PowerShell
실행될 때마다 저희가 생성한 profile.ps1 가 적용됩니다.

약속된 경로는 PowerShell 에서 $PROFILE | Select-Object * 를 입력하면 나옵니다.

저는 모든 User, Host 가 같은 모양새를 쓰고 싶어서
AllUsersAllHosts 에 보여주는 경로에 맞춰서 profile.ps1 파일을 생성했습니다.

그리고 해당 파일의 내용을 아래와 같이 작성하고 저장했습니다.


function Write-Directory {
    Write-Host "[$($ExecutionContext.SessionState.Path.CurrentLocation)]" -f DarkCyan
}
function Write-UserName {
    Write-Host "$env:username" -n -f DarkGreen
}
function Write-Arrow {
    Write-Host " $([char]0x2192)" -n -f DarkGreen
}
function Prompt {
    Write-Directory
    Write-UserName
    Write-Arrow
    return " "
}

https://croccifix.io/configuring-the-powershell-prompt 에서 복사해온 스크립트입니다.


이러고 나서 Powershell 을 다시 켜면 Customize 한 Prompt 가 나옵니다.


TIP: 콘솔 입출력 인코딩 UTF-8 로 변경

콘솔의 기본 입출력 인코딩을 UTF-8 로 지정하고 싶다면 앞서 작성한 profile.ps1
맨 윗줄에 아래 스크립트처럼 2줄만 추가해주면 됩니다.

[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$PSDefaultParameterValues['*:Encoding'] = 'utf8'

function Write-Directory {
    Write-Host "[$($ExecutionContext.SessionState.Path.CurrentLocation)]" -f DarkCyan
}
function Write-UserName {
    Write-Host "$env:username" -n -f DarkGreen
}
function Write-Arrow {
    Write-Host " $([char]0x2192)" -n -f DarkGreen
}
function Prompt {
    Write-Directory
    Write-UserName
    Write-Arrow
    return " "
}
  • [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
    : 입출력 인코딩 변경

  • $PSDefaultParameterValues['*:Encoding'] = 'utf8'
    : cmdlet 중 -Encoding 을 지원하는 것들의 기본 인코딩 변경

https://stackoverflow.com/questions/51933189/character-encoding-utf-8-in-powershell-session 참고



TIP: 간단 세팅 메소드 적용

공부할 때 가끔 설정을 바꿔야 되는 경우가 있는데, 그럴때 profile.ps1 에
아래처럼 설정용 메소드를 하나 만들고 사용하는 것도 편하다.

function Set-JenkinsStudyMode {
    $env:JAVA_HOME="C:\ci_cd_with_jenkins\zulu11.68.17-ca-jdk11.0.21-win_x64"
    $env:CATALINA_HOME="C:\ci_cd_with_jenkins\apache-tomcat-9.0.82"
    Set-Alias -Scope Global -Name "tomcat-start" -Value 'C:\ci_cd_with_jenkins\apache-tomcat-9.0.82\bin\startup.bat'
    Set-Alias -Scope Global -Name "tomcat-stop" -Value "C:\ci_cd_with_jenkins\apache-tomcat-9.0.82\bin\shutdown.bat"
}



참고

링크

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글