이 연재글은 Windows 개발환경의 2번째 글입니다.

Windows powershell의 모습은 기본으로 사용하면 Mac과 비교했을 때 매우 투박한 UI를 보여줍니다. 이러한 점은 개발의욕을 감소시키는 요인중 하나라고 생각합니다. Oh-My-Posh 설정을 통해 Mac에서 사용하는 터미널(oh my zsh)처럼 예쁘게 변경해 보겠습니다.

우선 Microsoft Store에 접속하여 Windows terminal을 설치합니다.

설치가 완료된 후 Windows terminal을 실행하면 powershell이 실행되고 tab 설정이 가능한 터미널로 변경된 것을 확인할 수 있습니다.

글꼴 설치

Powerline은 프롬프트의 스타일 지정을 위해 문자 모양을 사용합니다. 글꼴에 Powerline 문자 모양이 포함되지 않은 경우 프롬프트에서 여러 유니코드 대체 문자 ‘▯’가 표시될 수 있습니다. Cascadia Mono에는 Powerline 문자 모양이 포함되지 않지만 Powerline 문자 모양을 포함하는 Cascadia 코드 PL 또는 Cascadia Mono PL을 설치할 수 있습니다. 이러한 글꼴은 Cascadia 코드 GitHub 릴리스 페이지에서 설치할 수 있습니다.

위의 GitHub 페이지에서 파일을 다운(CascadiaCode-2009.22.zip)받고 압축해제하여 폰트를 설치합니다.(ttf 파일 설치)

PowerShell을 사용하여 Posh-Git 및 Oh-My-Posh를 설치

Windows terminal을 관리자 모드로 실행하여 진행합니다.

Posh-Git은 Git 명령, 매개 변수, 원격 항목 및 분기 이름에 대한 탭 완성뿐만 아니라 프롬프트에도 Git 상태 정보를 추가합니다. Oh-My-Posh는 PowerShell 프롬프트에 대한 테마 기능을 제공합니다. PSReadline을 사용하면 PowerShell의 명령줄 편집 환경을 사용자 지정할 수 있습니다.

PS C:\Users\jayden> Install-Module posh-git -Scope CurrentUser

계속하려면 NuGet 공급자가 필요합니다.
NuGet 기반 리포지토리를 조작하려면 PowerShellGet에 NuGet 공급자 버전 '2.8.5.201' 이상이 필요합니다. 'C:\Program
Files\PackageManagement\ProviderAssemblies' 또는
'C:\Users\jayden\AppData\Local\PackageManagement\ProviderAssemblies'에서 NuGet 공급자를 사용할 수 있어야 합니다. 또한
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'를 실행하여 NuGet 공급자를 설치할 수 있습니다.
지금 PowerShellGet에서 NuGet 공급자를 설치하고 가져오시겠습니까?
[Y] 예(Y)  [N] 아니요(N)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "Y"): y

신뢰할 수 없는 리포지토리
신뢰할 수 없는 리포지토리에서 모듈을 설치하는 중입니다. 이 리포지토리를 신뢰하는 경우 Set-PSRepository cmdlet을
실행하여 InstallationPolicy 값을 변경하십시오. 'PSGallery'에서 모듈을 설치하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): a
PS C:\Users\jayden> Install-Module oh-my-posh -Scope CurrentUser

신뢰할 수 없는 리포지토리
신뢰할 수 없는 리포지토리에서 모듈을 설치하는 중입니다. 이 리포지토리를 신뢰하는 경우 Set-PSRepository cmdlet을
실행하여 InstallationPolicy 값을 변경하십시오. 'PSGallery'에서 모듈을 설치하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): a
PS C:\Users\jayden> Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck

PowerShell 프롬프트 설정

터미널에서 nodepad $PROFILE을 입력하여 PowerShell 실행 시 설정할 내용을 다음과 같이 작성하고 저장합니다.

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

설정 후 Windows terminal을 재실행 합니다. 아래와 같은 오류가 발생하면 Set-ExecutionPolicy RemoteSigned로 정책을 설정하고 다시 실행합니다.

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

새로운 크로스 플랫폼 PowerShell 사용 https://aka.ms/pscore6

PSReadline 모듈을 로드할 수 없습니다. PSReadline 없이 콘솔이 실행되고 있습니다.
. : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\jayden\Documents\WindowsPowerShell\Microsoft.PowerShell_profil
e.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)
를 참조하십시오.
위치 줄:1 문자:3
+ . 'C:\Users\jayden\Documents\WindowsPowerShell\Microsoft.PowerShell_p ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): a

Windows terminal에 출력되는 powershell의 모습이 변경된 것을 확인할 수 있습니다. 그러나 폰트 문제로 깨져 보이는 부분이 발생합니다.

상단의 드롭 다운(∨)메뉴 – 설정을 클릭합니다.

settings.json 파일이 열리는데 아래 부분을 찾아 fontFace를 Cascadia Code PL로 변경하고 저장합니다.

{
    // Make changes here to the powershell.exe profile.
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "fontFace": "Cascadia Code PL",
    "hidden": false
},

Windows terminal을 다시 띄우면 아래와 같이 깨지지 않고 출력되는 것을 확인할 수 있습니다.

Git Repository를 Clone 받은 디렉터리로 이동하면 다음과 같이 표시됩니다. 이제 Mac Terminal 못지않은 이쁜 터미널을 window에서도 사용할 수 있게 되었습니다.

WSL Ubuntu에서 Powerline 설정

wsl ubuntu 관련한 내용은 아래 포스팅에서 확인할 수 있습니다.

http://3.36.120.4/post/1489/windows10-ubuntu-bash-shell/

만약 windows에서 제공하는 wsl ubuntu를 사용한다면 ubuntu terminal에서도 동일하게 위 내용을 적용할 수 있습니다. ubuntu 기본 터미널의 모습은 다음과 같습니다.

Go 및 Powerline-Go 설치

ubuntu를 실행하고 터미널에서 다음과 같이 Go 및 Powerline-Go를 설치합니다.

$ sudo apt-get update
$ sudo apt install golang-go
// 설치 내용 생략
$ go get -u github.com/justjanne/powerline-go
// 설치 내용 생략

Update .bashrc file

bash가 실행될 때마다 powerline-go를 실행하도록 설정합니다. nano ~/.bashrc 또는 선택한 텍스트 편집기를 사용하여 ~/.bashrc 파일을 열고 다음과 같이 작성하고 저장합니다.

GOPATH=$HOME/go
function _update_ps1() {
    PS1="$($GOPATH/bin/powerline-go -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

ubuntu 터미널을 다시 띄우면 기본 터미널의 모습과 달라진 것을 볼 수 있습니다. 다만 폰트 때문에 깨져 보이는 부분이 발생합니다.

터미널 속성에 들어가 폰트를 Cascadia Code PL로 변경 합니다.

확인을 누르고 나오면 깨져 보이던 부분이 사라지고 정상적으로 표시되는 것을 확인할 수 있습니다.

만약 위에서 설정한 windows terminal을 이용한다면 폰트 설정도 필요 없습니다. windows terminal에서 ubuntu로 접속하면 설정해둔 oh-my-posh가 그대로 적용되기 때문입니다.

이제부터는 Windows에서 멋지게 변경된 terminal을 사용하여 기분 좋게 개발하면 됩니다!!

연재글 이동[이전글] Windows10 OpenSSH 클라이언트 활성화, 개발자 모드 + Ubuntu Linux 활성화