쉘 프롬프트에서 현재 폴더 이름 만 표시하도록 Windows Powershell을 구성하십시오.


37

Windows 7에서 Powershell을 사용하고 있습니다. 쉘 프롬프트에서 전체 폴더 대신 현재 폴더 이름 만 표시하도록 Powershell을 구성하는 방법은 무엇입니까?

예를 들어, 대신을 C:\folder\directory\name>원합니다 name>.

답변:


57

PowerShell 프로필 ( %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1) 에서 프롬프트 기능을 사용자 지정해야합니다 . 이전에 수정 한 적이 없으면 비어 있거나 없을 수도 있습니다.

  1. 프로필을 엽니 다 (예 : 위에서 언급 한 파일을 열거 나 PowerShell에있는 동안 Notepad $profile)

  2. 프로필에 다음을 추가하십시오.

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  3. 프로필 저장

  4. PowerShell을 다시 시작

    선택 사항 . 스크립트를 실행할 수 없다는 메시지가 표시되면 PowerShell에서이 줄을 복사 / 붙여 넣기해야합니다.

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    다시 시작하십시오.

Windows PowerShell 실행 정책을 통해 Windows PowerShell이 ​​구성 파일을로드하고 스크립트를 실행하는 조건을 결정할 수 있습니다.

로컬 컴퓨터, 현재 사용자 또는 특정 세션에 대한 실행 정책을 설정할 수 있습니다. 그룹 정책 설정을 사용하여 컴퓨터 및 사용자에 대한 실행 정책을 설정할 수도 있습니다.

출처 : Microsoft 설명서


1
별로 요 [System.IO.Directory]::GetCurrentDirectory()Powershell의 현재 위치를 나타내는 것이 아니라 프로세스 작업 디렉토리를 나타내며 항상 동일한 것은 아닙니다. 다음으로 교체Get-Location
zdan

+1이지만 대신 get-location을 사용 GetCurrentDirectory합니다. PowerShell이 ​​항상 파일 시스템을 의미하는 것은 아닙니다. 레지스트리 스냅인을 사용하면 사용할 수 cd hkcu:있으며 이제 프롬프트가 완전히 해제됩니다.
vcsjones

@Synetech 그것은 형식 도움말에 깊이 묻혀 있습니다 : \
Bob

1
$PWD을 호출 하는 대신 사용할 수도 있습니다 Get-Location. 예function prompt { (Split-Path -Leaf $pwd) + '> ' }
Joey

1
prompt프로파일 파일에서 정의 할 필요는 없습니다 . 글로벌 세션 범위 내에 있어야합니다. 기본값은 동등 보인다 function prompt {"PS " + (Get-Location) + ">"}반면, function prompt {""}같은 수 있습니다 function prompt {"PS>"}. function prompt {" `b"}빈 프롬프트를 얻는 데 사용하십시오 (적어도 시각적으로 ...).
masterxilo

5

추가로, $ profile을 처음 만들 때까지 @Synetech의 명령을 수행 할 수 없었습니다.

  1. PowerShell 열기
  2. 입력 $profile하고 Enter를 누르십시오. PowerShell이 ​​존재하지 않더라도 PowerShell이 ​​의존하는 프로필 경로가 표시됩니다 (나에게 적합하지 않음). 내 경로는 @Synetech이 위에 게시 한 것과 다릅니다.

    >$profile
    C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
  3. WindowsPowerShell 폴더와 Microsoft.PowerShell_profile.ps1 파일을 모두 만들어야했습니다.

  4. @Synetech의 코드를 추가하고 PowerShell을 다시 시작하십시오.

노트 :

posh-git (GitHub 데스크탑 사용시 설치)을 사용하는 경우 @Synetech의 스크립트는 posh-git 프롬프트를 무시합니다. posh-git에 대한 추가 프롬프트 스크립트 here .


1
그것은 동일합니다. %userprofile%C:\Users\[username]
DavidPostill로

@DavidPostill 이해했지만 PowerShell은 % userprofile %을 디렉토리로 인식하지 못했습니다. 네트워크 설정으로 인해 PowerShell이 ​​해당 경로를 인식하도록 아직 사용자 정의되지 않았다고 생각하십니까?
Bryan

2
구문은 PowerShell의 다른 : $Env:userprofile동등하다echo %userprofile%
DavidPostill

$ profile은 ISE와 일반 프롬프트의 값이 다르므로 2 개의 파일을 작성해야 할 수도 있습니다.
크리스

3

전체 경로가없고 끝에서 기호보다 큰 현재 폴더를 표시하도록 프롬프트를 변경하십시오.

한 가지 방법은 다음과 같습니다.

Function Prompt { "$( ( get-item $pwd ).Name )>" }

또는:

Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }

또는:

Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }

첫 번째와 세 번째는 네트워크 폴더에서 작동한다는 점에서 허용되는 답변보다 낫습니다. Split-Path는와 같은 경로에서 올바르게 작동하지 않습니다 \\myserver\my\path.
크리스

2

@Synetech의 답변과 PowerShell 프로필 에서 찾은 정보를 결합하는 것이 매우 쉽다는 것을 알았습니다 . 나는 PS의 초보자이기 때문에. 내 단계 (vscode의 경우) :

  1. test-path $ profile (PS 명령 프롬프트에서 프로파일이 설정되어 있습니까?)
  2. new-item -path $ profile -itemtype 파일 -force (위에 대한 대답이 false라고 가정)
  3. notepad $ profile (메모장을 엽니 다)
  4. 붙여 넣기

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  5. 저장 (위치를 선택할 필요는 없습니다. 이미 완료되었습니다)
  6. 다시로드 vscode-스크립트 실행에 대한 메시지가 표시되거나 다시로드하기 전에 다음 단계를 수행하십시오.
  7. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (PS 프롬프트에서 SuperUse 답변)

  8. vscode 재로드

따라서 대부분 쉽게 시작할 수있는 @Synetech의 답변 (공개됨)-특히 2 단계는 매우 쉽습니다.


0

아래 한 줄은 나를 위해 잘 작동합니다.

(Get-Location | Get-Item). 이름


그것은 질문이 아니 었습니다-위의 정답을 Jelgab에서 참조하십시오
hfrmobile
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.