2010. 7. 22. 11:40
안녕하세요. 엉스데브 입니다.

기존에 Linux 및 bash 에 익숙한 저는 PowerShell 의 Prompt가 영 낯설게 느껴집니다.
그래서 Bash 스타일로 Prompt를 변경하는 방법을 찾아보았습니다.

먼저 도움말 목록에서 Prompt 에 관련된 항목이 있나 검색 해 보려합니다.
도움말에 내가 찾는 항목이 있는지 확인 해 볼 때에는, powershell_ise 에 포함되어 있는 도움말을 참고하는게 편하더군요.

먼저 powershell_ise 를 켜고..


도움말을 엽니다.


검색 탭을 선택해서 찾고자 하는 키워드를 넣고 검색 합니다.


about_prompt 라는 항목으로 도움말이 존재하네요. 읽어 봅시다.

...

대강 읽어 본 결과, 아래의 내용을 확인 할 수 있었습니다.
PowerShell 은 "prompt" 라는 이름의 함수를 통해 Prompt 를 어떻게 표시 할 것인지를 결정합니다.
"prompt" 함수는 기본적으로 PowerShell 에 의해 자동으로 만들어 지지만,
함수를 재정의해서 Prompt 표시 내용을 마음대로 변경 할 수도 있습니다.
또, 재정의 한 "prompt" 함수를 Windows PowerShell Profile 에 등록 해 두면, 항상 재 정의 된 Prompt 로 작업할 수 있습니다.

그럼 먼저 PowerShell 이 기본 제공 해 주는 "prompt" 함수의 내용을 살펴보겠습니다.
선언 되어 있는 함수의 내용을 살펴보려면, 해당 함수의 Deninition 속성을 확인 하면 됩니다.
Get-Item 명령어로 Function Provider 를 통해 "Prompt" 함수를 확보 한 뒤, Definition 속성을 확인 합니다.
(Get-Item Function:\prompt).Definition



PowerShell 에서 기본 제공 하는 "prompt" 함수의 내용은 이렇군요.

자~ 그럼 Bash 스타일로 바꾸기 위해서 "prompt" 함수를 재정의 해 봅시다.
구글링을 통해 Bash 스타일의 "prompt" 함수 예제를 찾을 수 있었습니다. 바로 아래 코드 입니다.
Function prompt { 
  "[$env:username@$([System.Net.Dns]::GetHostName()) $(Get-Location)]$ "
}

코드를 실행 해 보니, 아래와 같이 표시 됩니다.


음~ 이제 Bash 스타일과 많이 비슷 해 졌는데.. 경로명 표시하는 부분이 마음에 들지 않네요.

제가 주로 사용하던 CentOS + Bash 조합의 기본 Prompt 는 경로명을 표시 할 때 전체 경로가 아닌 현재 작업 중인 디렉토리의 이름만 표시하게끔 되어 있습니다. "prompt" 함수를 고쳐서 현재 디렉토리의 이름만 표시 하도록 변경 하겠습니다.

Function prompt { 
  "[$env:username@$([System.Net.Dns]::GetHostName()) $((Get-Item (Get-Location)).Name))]$ "
}

자, 아래와 같이 표시가 변경 되었습니다.


이제 친숙한 모습의 Prompt 를 사용 할 수 있게 되었습니다. 만족스럽네요.

자, 이제 마지막으로, Profile 파일에 이 함수를 추가 해서 PowerShell 실행 시 기본적으로 이 Prompt 를 쓸 수 있도록 해야 겠습니다.

먼저 현재 사용되고 있는 Profile 파일의 경로 및 살재 존재여부를 확인 해 봤습니다.


경로는 "C:\Users\ungs.SDS.000\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" 이고, 이미 존재 하는 파일 이네요.

Profile 파일을 열어서 새로 만든 prompt 함수를 추가 합니다.



메모장으로 추가 한 내용을 저장 하고, 새로운 PowerShell 창을 띄워서 잘 되는지 확인 할 차례입니다.


음! 잘 되는군요.
이제 익숙한 스타일의 Prompt 로 PowerShell 을 사용 할 수 있겠네요.

위 기록을 참고해서 여러분들도 각자 자신이 편한대로 Prompt 를 설정해서 사용해 보세요~!



<참고 문서>
Windows Power Shell 도움말 > Windows PowerShell About 도움말 항목 > about_Prompts
man "about_Prompts" -full

<참고 URL>
http://itnervecenter.com/content/make-your-windows-powershell-prompt-look-your-bash-prompt
Posted by 알 수 없는 사용자
:
BLOG main image
Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

카테고리

분류 전체보기 (76)
Windows (2)
Powershell (56)
AD (0)
Exchange (6)
System Center (9)
IIS (0)
SQL (3)
Sharepoint (0)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Total :
Today : Yesterday :