설치

[windows] Terminal (cmd, powershell) 꾸미기

Mary's log 2025. 1. 20. 18:50
참고 문헌

Window 10 (정리하긴 했는데 그냥 아래 블로그에서 적당히 따라했다)
Windows에서 Oh My Posh 즐기기

Window 11
1. PowerShell 꾸미기 < 따라하다가 오류 발생...
2. 못생긴 windows Powershell 예쁘고 쓸만하게 만들기  < 위에서 설치한 내용 바탕으로 추가
3. 경고 뜨고, 아이콘 안 뜨는 오류는 chatgpt 도움으로 결국 꾸미기 성공

 

환경 : 오래 전에 Window 10 Pro 로 구매했으나 2024-12-25에 무료로 11 업그레이드,

진행 도중에 내 pc Windows 11 Pro은 이미 powershell 버전은 7이었다. (5가 아니고..?)

이미 꾸미기 완료 하고 기억 나는대로 적은거라 완벽하지 않을 수 있다;

++ 2025-02-02 pc를 Win 10으로 재설치하면서 또 다르게 에러가 난다. Win 10은 참고 블로그를 눈치껏 따라하는게 좋을듯 싶다.

 

 

 

mac에서 iTerm, oh-my-zsh, powerlevel10k로 커스텀해서 살다가

오랜만에 windows로 넘어와서 싹 포맷 후 11 버전으로 업글하고 cmd, powershell을 열었더니... 삭막해졌다...

미감이 죽은 채로 덜 예민하게 살아도 무방한 감각이었으면 좋았으련만...

 

아무튼 

참고문헌의 1 블로그를 따라서 여러개 설치했다.

(맥의 brew에 익숙해지고, 윈도우의 커맨드가 뭔지 잘 몰라서 헤맸지만 40분 만에 꾸미기는 완료한거 같다)

 

 

 

Nerd Fonts 사이트에서 사용할 폰트 설치

https://www.nerdfonts.com/font-downloads

위의 사이트 들어가서,  나는 

FiraCode Nerd Font,  FiraMono Nerd Font를 설치했다.

예전에 이런 특정 테마?에 써야하는 폰트를 설치해야하는 걸 몰랐을 적에는

eclipse, sts, notepad++ 에서 주로 'D2Coding'를 사용했었는데

각자 OS theme에 맞는 아이콘까지 정상 조회되려면

해당 테마에 맞는 font로 지정해야하더군요, 아무튼

 

Windows Terminal 설치

난 이미 Windows 10 에서 11 로 버전 Up 되고 나니 기본으로 설치되어 있길래 잘 모르겠다.

Window 11 에서는 Terminal이 자동으로 설치되어 있었는데 

Window 10 으로 다운그레이드 하니까 없다... 그렇군요 설치한다.

 

Microsoft Store - Terminal - 소유함(설치GO) - 끝.

 

 

Windows Terminal 시작 설정, 폰트 설정

Terminal이 prompt로 시작시킬지, powershell로 시작시킬지 설정하고

폰트도 설정해줄 것이다.

 

작업 표시줄 - 검색 - 터미널 >

 

'설정' 열기.

 

Terminal을 열거나 + 탭을 누르면 'Windows PowerShell'로 시작하게 설정.

 

이제 PowerShell 인 경우 폰트를 바꾸러 간다. (다른 shell 도 폰트 변경해둬도 좋을듯)

Windows PowerShell - 추가 설정 - 모양

 

아까 설치했던 Fira 머시기 각자의 폰트로 '글꼴'에 변경 

 

 


Scoop, Neovim, gcc 설치

scoop은 mac의 brew 같은거려나. 아무튼  저거 다 설치 안되어있어서 했다.

 

Scoop

아래에서 첫번째 cmd를 치면 Y / N 뭐시기 할거냐 물어보는데 Always Y (항상 네) 였던가를 해야했던 거 같다...

잘 몰라서 의심스럽길래 그냥 Y 했더니 나중에 명령어가 잘 안 먹혀서 또 물어봤던 것 같다.

# scoop
$ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
$ irm get.scoop.sh | iex



Neovim

vi, nano 그런 명령어인가 아무튼 설치하라니까 일단 설치

gcc

c언어 compiler라고 한다.

$ scoop install neovim gcc

 

 

 

여기까지 설치했으면 한 번 컴퓨터를 재부팅한다. 다시시작, 껐다 켜기.


⭐ ⭐ ⭐ 진행하다 오류 내용 ⭐ ⭐ ⭐

1. user_profile.ps1 파일에 Set-Alias 입력 후 저장하면? 저장이 안됐다.

2. scoop으로 Oh My Posh git 설치가 안된다.

테마를 안 정해놔서 일단 뭐라도 됐으면 좋겠는데 다 오류가 나서 다른 블로그를 찾았다.


 

 

두번째 블로그에서는

powershell 기본이 5라길래 7을 설치하래서 일단 설치했다.

(근데 이미 내 pc powershell은 버전 7.4. 뭐시기였던거 같은데 또 해도 무방하니까 그냥 따라가기)

# powershell install
winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget

Window 10에서 새로 설치해서 그런가, Win 11 때와는 다른 느낌이다.

 

 

 

일단 하단의 추천 bucket들 설치 명령어를 수행하면 설치가 안된다고 오류가 뜬다.

밑의 git을 먼저 설치하라고 친절한 설명이 뜨니, git을 먼저 설치한다.

$ scoop install git

 

그 후에 bucket 설치 명령어가 잘 수행된다.

$ scoop bucket add extras 
$ scoop bucket add java
$ scoop bucket add nerd-fonts
$ scoop install aria2 

# 본인이 설치한 폰트명?
$ scoop install which fzf jq zoxide fd nerd-fonts bat FiraMono-NF
# 아무튼 이건 오류 발생. [Couldn't find manifest for 'nerd-fonts'.]

# 안써봤는데 좋아보여서 넣어봄? (뭔지 모르겟지만 일단 참고 블로그 따라함;)
$ scoop install sudo curl grep gzip tar touch vim neovim 7zip powertoys bottom ntop
$ scoop install coretemp cpu-z crystaldiskinfo aria2 crystaldiskmark filezilla honeyview hwmonitor hxd postman putty unlocker vscode python everything openjdk17 python nvm mysql yarn docker
$ scoop install kubectx k9s

중간에 안되던 것도 있던거 같은데 몰러 걍.. 필수는 아닌듯 하여;

 

 

zoxide 설치

path를 저장해 주는 도구. Win 10에서 진행하다 안돼서 확인해보니 이 부분이 없다고 한다. 

설치하자마자 뭔가 폰트가 바뀌면서 적용되는 듯? (아닐수도)

scoop install zoxide 
Invoke-Expression (& { (zoxide init powershell | Out-String) })

 

 

또 oh-my-posh 설치 오류?

아래 3개 중 첫 번째는, Terminal에서 진행하면 아래와 같은 권한 요구 문구가 뜨기 때문에,

Install-Module Terminal-Icons -Repository PSGallery -Force
Install-Module posh-git -Scope CurrentUser -Force
Install-Module oh-my-posh -Scope CurrentUser -Force
Install-Module : 'C:\Program Files\WindowsPowerShell\Modules'에 모듈을 설치하려면 관리자 권한이 필요합니다. 관리자 권한
이 있는 계정으로 컴퓨터에 로그온한 후 다시 시도하거나 "-Scope CurrentUser"를 명령에 추가하여 'C:\Users\parks\Documents\
WindowsPowerShell\Modules'을(를) 설치하십시오. 관리자 권한(관리자 권한으로 실행)으로 Windows PowerShell 세션을 실행해
볼 수도 있습니다.
위치 줄:1 문자:1
+ Install-Module Terminal-Icons -Repository PSGallery -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Install-Module], ArgumentException
    + FullyQualifiedErrorId : InstallModuleNeedsCurrentUserScopeParameterForNonAdminUser,Install-Module

 

PowerShell (터미널 아님!)을 '관리자 권한으로 열기'로 진행해서

NuGet 공급자에 대한 동의 Y를 입력하고, Install-Module 3개를 다시 진행한다.

 

위에서 oh-my-posh를 설치했음에도 불구하고 아래 2개 CLI를 실행하면

oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/atomic.omp.json' | Invoke-Expression
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json

다음과 같은 오류가 뜬다. 흠...

$ oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/atomic.omp.json' | Invoke-Expression
>>
oh-my-posh : 'oh-my-posh' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다.
이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
위치 줄:1 문자:1
+ oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanD ...
+ ~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (oh-my-posh:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException



$ scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
WARN  error: 원격 서버에서 (404) 찾을 수 없음 오류를 반환했습니다.
Couldn't find manifest for 'oh-my-posh' at 'https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json'.

 

+ Window 10 에선 계속 위의 오류가 떠서 검색 ( 참고 블로그 ) 해서

$ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

위의 명령어 실행 후,

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

실행 규칙은 N에서 A로 변경했다... (근데 이거 위에서 ' Set-ExecutionPolicy RemoteSigned -Scope CurrentUser' 이거로 했는데도 왜 또..?)

++ Win 11에선 어찌저찌 됐는데 Win 10에선 oh-my-posh가 계속 설치가 안되는 오류로 인해서

또 검색해서(참고블로그)... 추가 설치 명령어를 실행했다.

$ winget install JanDeDobbeleer.OhMyPosh -s winget

그리고 아래 나와있는 profile.ps1 파일 부분에서

# oh-my-posh 초기화
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\easy-term.omp.json" | Invoke-Expression

여기를 Win 10일 땐,

# oh-my-posh 초기화
oh-my-posh init pwsh | Invoke-Expression

이렇게 바꾸니까 먹혔다.. 사실 커맨드 하나하나 분석해서 해야하지만, 귀찮아서 막했더니 일어난 참사;

(처음에 이렇게 했다가 나중에 밑에 가서 Theme 다시 config 해주니 먹혔다)

 

아무튼

Win 10에서 어찌저찌 성공해서 Terminal을 열면 이렇게

 

Win 11에선 Terminal을 열면 이렇게 뜨긴 한다...

이 때 Font 설정 안 바꿔놔서 아이콘이 다 깨지고 있다. Font만 바꿔주면 된다.

(Win 11일 땐) Terminal을 열 때마다 빨간색 글씨

아래와 같은 경고들이 뜨기 시작했다.

경고: PSReadLine ?듭뀡? PowerShell 7 ?댁긽?먯꽌留?吏?먮맗?덈떎.

Set-PSReadLineOption : 매개 변수 이름 'PredictionSource'과(와) 일치하는 매개 변수를 찾을 수 없습니다.
위치 C:\Users\user\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:12 문자:22
+ Set-PSReadLineOption -PredictionSource History
+                      ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-PSReadLineOption], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.SetPSReadLineOption

Set-PSReadLineOption : 매개 변수 이름 'PredictionViewStyle'과(와) 일치하는 매개 변수를 찾을 수 없습니다.
위치 C:\Users\user\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:13 문자:22
+ Set-PSReadLineOption -PredictionViewStyle ListView
+                      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-PSReadLineOption], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.SetPSReadLineOption

Set-Alias : 'history' 별칭에서 AllScope 옵션을 제거할 수 없습니다.
위치 C:\Users\user\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:18 문자:1
+ Set-Alias history historyfunc
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (history:String) [Set-Alias], SessionStateUnauthorizedAccessException
    + FullyQualifiedErrorId : AliasAllScopeOptionCannotBeRemoved,Microsoft.PowerShell.Commands.SetAliasCommand

 

 

 

bash 설정

$ notepad $profile

로  설정을 바꾸고 반영하는

$PROFILE

를 실행했음에도

 

인코딩 깨짐 + 못찾겠단 경고가 계속 떴다. chatgpt가 도와준 최종 bash 설정은 이러하다.

⭐주의 : 나는 기존에 설정값들이 있어서 그 내용을 바탕으로 chatgpt가 수정해준 것이기 때문에,

다른 오류가 발생할 수 있으니 각자 환경에 맞게 수정해야한다.

# oh-my-posh 초기화 테마 설정. 바로 config Theme 지정이 안된다면 이거로 먼저 실행?
oh-my-posh init pwsh | Invoke-Expression

# oh-my-posh 초기화 및 테마 지정 (Theme : https://ohmyposh.dev/docs/themes)
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\easy-term.omp.json" | Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/M365Princess.omp.json" | Invoke-Expression

# Terminal-Icons 모듈 불러오기
Import-Module -Name Terminal-Icons

# zoxide 초기화
Invoke-Expression (& { (zoxide init powershell | Out-String) })

# 별칭 설정
Set-Alias vim nvim
Set-Alias ll ls
Set-Alias grep findstr
Set-Alias k kubectl

# PSReadLine 키 설정
Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar

# PowerShell 7 이상에서만 PSReadLine 설정 적용
if ($PSVersionTable.PSVersion.Major -ge 7) {
    try {
        Set-PSReadLineOption -PredictionSource History
        Set-PSReadLineOption -PredictionViewStyle ListView
    } catch {
        # 오류 발생 시 메시지 출력 안 함
    }
}

# history 함수 정의 및 별칭 설정
function historyfunc {
    type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
}
Remove-Item Alias:history -Force  # 기본 history 별칭 제거
Set-Alias history historyfunc     # history 별칭으로 새로 설정

 

 

기존에 뜨던 빨간 경고들과 + 아이콘이 안 뜨던 것들 등 해결이 되었고

최종적으로는 아래와 같이 잘 뜨고 있다.

순서랑 설정값은 모르겠지만 사실 노트북 포맷을 잘하는지라 나중에 까먹을 나를 위하여... 기록해둔다.