PowerShell의 profile이란?
PowerShell의 profile은
- 셸이 시작될 때 자동으로 실행되어
- 환경 변수, alias, 함수, 초기화 코드 등을 설정하는
- 시작 스크립트(확장자
.ps1파일).
PowerShell은 상황에 따라 서로 다른 profile을 사용할 수 있도록
범위(scope) 와 host(PowerShell엔진을 감싸는 인터페이스) 개념을 제공한다.
참고로 많은 기본 Windows 설치 환경에서는
ExecutionPolicy가 Restricted로 설정되어 있어
보안을 위해 .ps1 스크립트 실행이 차단되며,
이로 인해 PowerShell profile이 자동 실행되지 않는다는 메시지가 표시될 수 있다.

이 경우,profile들이 제대로 적용되려면,
PowerShell을 관리자 권한으로 실행하고 다음의 명령어를 실행하여 권한을 줘야 함.
> set-executionpolicy remotesigned
일반적으로 RemoteSigned 를 권장함(인터넷에서 받은 스크립트에 서명 필요하고, 로컬의 경우엔 서명 필요 없음).
회사라면 AllSigend 인 경우(모두 스크립트가 실행하려면 서명 필요)가 많으며, 임시 실행이나 자동화에선 Bypass (보안검사 없이 전부 실행 허용)을 쓰기도 하나 매우 조심해야 함.
참고로, conda의 초기화 및 hook이 들어간.ps1이 동작하려면 ExecutionPolicy가 remotesigned 정도는 되어야 함.
2023.06.29 - [개발환경] - [CLI] Power Shell의 Profile 수정 : conda를 위해서
1) 4가지 PowerShell profile
PowerShell은
- 최대 4개의 profile 파일을 가질 수 있으며,이는
- 사용자 범위와
- host 범위의 조합으로 결정된다.
| 구분 | 의미 | 변수 |
| All Users + All Hosts | 모든 사용자, 모든 host 공통 | $PROFILE.AllUsersAllHosts |
| All Users + Current Host | 모든 사용자, 현재 host 전용 | $PROFILE.AllUsersCurrentHost |
| Current User + All Hosts | 현재 사용자, 모든 host 공통 | $PROFILE.CurrentUserAllHosts |
| Current User + Current Host | 현재 사용자, 현재 host 전용 | $PROFILE |
PowerShell은
- 시작 시 위 테이블의 순서대로,
- 실제로 존재하는 파일만 로드함.
로드시 설정이 덮어쓰기가 가능하여 뒤에 있을수록 범위는 좁으나 우선순위가 높음.
환경변수 $PROFILE 에는 Current User + Current Host 에 대한 프로파일이 들어가 있음을 유의할 것.
1-1) profile 파일들 존재 유무 확인하기.
test-path 와 앞서 테이블의 (환경)변수를 이용하면 됨:
> test-path $profile.allusersallhosts
> test-path $profile.alluserscurrenthost
> test-path $profile.currentuserallhosts
> test-path $profile
- 윈도우즈의 명령어에선 대소문자 구분을 안함.
- 파일이 존재할 경우
True가 없을 경우False를 반환.
1-2) profile 파일들의 경로 확인하기
다음은 위의 테이블의 경로를 확인하는 방법임:
> $PROFILE | Select-Object * | Format-List
- 이 경우, 각 profile의 초기화
.ps1파일의 path를 출력함.
2) 참고: PowerShell에서의 “host”란?
PowerShell이 구분하는 host는
PowerShell 엔진을 감싸는 인터페이스 프로그램 을 가리킴.
개념적으로는 shell과 terminal의 관계와 비슷하나 터미널 S/W라고 보기엔 좀 차이가 있으니 주의할것.
HOST는
PowerShell 엔진이
상호작용하는 실행 환경(ConsoleHost, ISE 등)을 의미함.
대표적인 예는 다음과 같다.
| 실행 환경 | $Host.Name |
| 일반 콘솔 | ConsoleHost |
| PowerShell ISE | Windows PowerShell ISE Host |
참고1: ISE란?
PowerShell ISE(Integrated Scripting Environment)는
- Windows PowerShell 5.1에 포함된 그래픽 기반 스크립트 편집·실행·디버깅 환경으로,
- 콘솔보다 편리한 개발 기능을 제공하는 전용 호스트임.
참고2: VS Code, Windows Terminal, powershell.exe 는 다른 host인가?
- VS Code와 Windows Terminal, powershell.exe에서 실행된 PowerShell은
- 모두
ConsoleHost로 인식됨. - 따라서 이들은 host 기준으로 profile이 분리되지 않음.
2-1) host가 다른 경우
PowerShell을 윈도우의 검색에 입력하면 다음이 보임 (앱 한정시):

여기서 ISE 가 붙은 경우는 다른 host가 됨.
- PowerShell ISE와 콘솔은 서로 다른 host이므로
- CurrentHost profile 파일이 다름.
참고로, x86은 32비트 환경을 의미함.
2-2) 일반적인 환경에서 host 구분은 의미 없음
일반적인 환경에서 host 구분은 거의 의미가 없다
일반적으로 많이 쓰는 환경은 다음과 같다.
- Windows Terminal
- VS Code
- 일반 콘솔
이 경우:
- 모두
ConsoleHost - 따라서 CurrentHost profile은 동일
즉, host 기준으로 profile을 나눌 필요는 거의 없으며,
특수한 경우(ISE, 임베디드 PowerShell)를 제외하면 실질적인 차이는 거의 없다.
단, PowerShell 7.x를 설치한 경우엔 host가 달라진다.
(PowerShell 7.x 는 별도로 설치하며 별도로 존재함. 단순 upgrade가 아님)
| 실행 파일 | PowerShell 버전 | profile 폴더 |
powershell.exe |
Windows PowerShell 5.1 | Documents\WindowsPowerShell |
pwsh.exe |
PowerShell 7.x | Documents\PowerShell |
2023.06.28 - [개발환경] - [Env] PowerShell v7.3.5
[Env] PowerShell v7.3.5
잡담wsl을 사용하면서 powershell을 쓸 일이 많이 줄었지만... 그래도 간간히 필요하고, 아예 손을 놔버리면 그나마 익숙치 않은데 더 안 좋아지는 터라...노트북의 powershell을 업데이트했다. 주의할
ds31x.tistory.com
3) Windows PowerShell 5.1 기준 profile 경로
3-1) 공통 profile (All Hosts)
Documents\WindowsPowerShell\profile.ps1
- 콘솔과 ISE 모두에서 로드됨
3-2) 콘솔 전용 profile (ConsoleHost)
Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- 콘솔에서만 로드
- ISE에서는 로드되지 않음
3-3) ISE 전용 profile (ISE Host)
Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
- ISE에서만 로드
- 콘솔에서는 로드되지 않음
4) 참고: Conda와 profile의 관계
conda init powershell은 보통 다음 파일을 수정한다.
- CurrentUserAllHosts의
profile.ps1 C:\Users\<계정명>\OneDrive\Documents\WindowsPowerShell\profile.ps1
이 파일은:
- 현재 사용자에게서
- 모든 host에 공통 적용되므로
- 가장 conda를 사용하기 위한 초기화가 이루어지기 적절한 위치임..
PowerShell 시작 시 이 파일이 로드되면 conda hook이 실행되고, 설정에 따라 (base)가 표시된다.
다음의 코드를 powershell에서 실행하면 어느 profile에 설정되었는지 확인 가능함:
Select-String `
-Path $PROFILE.CurrentUserAllHosts `
-Pattern '#region\s+conda|shell\.powershell|Invoke-Expression' `
| Select-Object `
Path, LineNumber, Line
5) 초보자를 위한 정리된 사용 원칙
- 공통 설정은
profile.ps1 (CurrentUserAllHosts) - host 구분은 ISE 같은 특수한 경우에만 고려
- 일반 환경에서는 PowerShell 5.1 / 7만 구분
- PowerShell을 공부할 경우, 가능하면 기본 셸을 PowerShell 7(pwsh) 로 통일 (PowerShell 7.x 는 별도 설치 필요)
2023.06.28 - [개발환경] - [Env] PowerShell v7.3.5
[Env] PowerShell v7.3.5
잡담wsl을 사용하면서 powershell을 쓸 일이 많이 줄었지만... 그래도 간간히 필요하고, 아예 손을 놔버리면 그나마 익숙치 않은데 더 안 좋아지는 터라...노트북의 powershell을 업데이트했다. 주의할
ds31x.tistory.com
'shell' 카테고리의 다른 글
| Shell Initialization File-dot files: .profile, .bashrc, .zprofile, .zshrc (0) | 2026.01.02 |
|---|---|
| grep (Global Regular Expression Print) (0) | 2025.12.31 |
| iconv, clip.exe, pbcopy, xclip, Set-Clipboard (0) | 2025.12.29 |
| kill: Process에게 Signal을 보내기. (3) | 2025.07.25 |
| Shell 함수 기본: bash, zsh에서 함수 사용하기 (3) | 2025.07.25 |