(Window) PowerShell
을 처음 켰을 때 보이는 working directory
경로는
그 길이가 길어짐에 따라 입력 커서가 지나치게 오른쪽에 치우쳐집니다.
처음에는 참을 만하지만, 점점 개발을 하다보면 이게 상당히 꼴보기 싫습니다.
이런 못생긴(?) prompt 가 아닌 자신만의 Custom 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
가 나옵니다.
끝
콘솔의 기본 입출력 인코딩을 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 참고
공부할 때 가끔 설정을 바꿔야 되는 경우가 있는데, 그럴때 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"
}