将 Windows PowerShell 配置为在 shell 提示中仅显示当前文件夹名称

Vee*_*era 54 windows-7 powershell

我在 Windows 7 上使用 PowerShell。如何配置 PowerShell 使其仅在 shell 提示中显示当前文件夹名称(而不是完整路径)?

例如,C:\folder\directory\name>我想要name>.

Syn*_*ech 87

您必须在 PowerShell 配置文件 ( %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1) 中自定义提示功能;如果您以前从未修改过它,它可能是空白的,甚至不存在。

  1. 打开您的个人资料(例如,打开上述文件或在 PowerShell 中,Notepad $profile

  2. 将以下内容添加到您的个人资料中:

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存配置文件

  4. 重启 PowerShell

    可选。如果您收到一条消息,提示您不能运行脚本,则需要在 PowerShell 中复制/粘贴此行:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    
    Run Code Online (Sandbox Code Playgroud)

    并重新启动。

Windows PowerShell 执行策略可让您确定 Windows PowerShell 加载配置文件和运行脚本的条件。

您可以为本地计算机、当前用户或特定会话设置执行策略。您还可以使用组策略设置为计算机和用户设置执行策略。

来源:微软文档

  • 您也可以使用 `$PWD` 而不是调用 `Get-Location`。例如`function prompt { (Split-Path -Leaf $pwd) + '> ' }` (2认同)

小智 12

更改提示以显示没有完整路径且末尾大于符号的当前文件夹:

一种方法可能是:

Function Prompt { "$( ( get-item $pwd ).Name )>" }
Run Code Online (Sandbox Code Playgroud)

或者:

Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }
Run Code Online (Sandbox Code Playgroud)

或者:

Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
Run Code Online (Sandbox Code Playgroud)

  • 第一个和第三个比公认的答案更好,因为它们适用于网络文件夹。Split-Path 在类似 `\\myserver\my\path` 的路径上将无法正常工作。 (2认同)

小智 10

作为附加说明,在我第一次创建 $profile 之前,我无法执行Synetech 的命令

  1. 打开 PowerShell

  2. 键入$profile并按回车键。这将显示 PowerShell 依赖的配置文件路径,即使它不存在(它不适合我)。我的路径与Synetech 发布的不同。

     >$profile
     C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我必须创建WindowsPowerShell文件夹和Microsoft.PowerShell_profile.ps1文件。

  4. 添加Synetech 的代码并重新启动 PowerShell。

笔记:

如果您使用的是 posh-git(在使用 GitHub 桌面时安装),Synetech 的脚本将覆盖 posh-git 提示。此处为 posh-git 的其他提示脚本。

  • 一样的。`%userprofile%` 扩展为 `C:\Users\[username]` (2认同)
  • PowerShell 中的语法不同:`$Env:userprofile` 等价于 `echo %userprofile%` (2认同)

Mar*_*ark 5

我发现这非常简单 - 结合Synetech 的答案和在以下位置找到的信息和PowerShell 配置文件。因为我是 PowerShell 的新手。我的步骤(针对 Visual Studio Code):

\n
    \n
  1. test-path $profile(在 PowerShell 命令提示符中 - 是否设置了配置文件?)

    \n
  2. \n
  3. new-item -path $profile -itemtype file -force(假设上述答案为假)

    \n
  4. \n
  5. notepad $profile(打开记事本)

    \n
  6. \n
  7. 粘贴到

    \n
     function prompt {\n   $p = Split-Path -leaf -path (Get-Location)\n   "$p> "\n }\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
  9. 保存(您不必选择位置;它已经为您完成)

    \n
  10. \n
  11. 重新加载 Visual Studio Code - 您可能会收到一条有关运行脚本的消息(或者在重新加载之前执行下一步)

    \n
  12. \n
  13. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(在 PowerShell 提示符下,来自 Super\xc2\xa0User 答案)

    \n
  14. \n
  15. 重新加载 Visual Studio 代码

    \n
  16. \n
\n

所以这主要是 Synetech 的答案,但有点容易上手 - 特别是第 2 步使这变得非常容易。

\n