#配置文件
#简介
PowerShell 配置文件(profile)是一个在会话启动时自动执行的 .ps1 脚本。可以在其中定义别名、函数、提示符、环境变量和其他个性化设置。
配置文件不是必需的,默认情况下可能并不存在。$PROFILE 变量保存当前用户、当前宿主对应的配置文件路径。
#查看配置文件路径
$PROFILE 本身等价于当前用户、当前宿主的配置文件路径,它还有其他变体:
> $PROFILE
> $PROFILE.CurrentUserCurrentHost
> $PROFILE.CurrentUserAllHosts
> $PROFILE.AllUsersCurrentHost
> $PROFILE.AllUsersAllHosts
| 变体 | 作用范围 |
|---|---|
CurrentUserCurrentHost | 当前用户,仅当前宿主(如 pwsh) |
CurrentUserAllHosts | 当前用户,所有宿主 |
AllUsersCurrentHost | 所有用户,仅当前宿主 |
AllUsersAllHosts | 所有用户,所有宿主 |
PowerShell 7 在 Windows 上通常使用 $HOME\Documents\PowerShell\ 目录,在 Linux 和 macOS 上通常使用 ~/.config/powershell/ 目录。Windows PowerShell 5.1 使用 WindowsPowerShell 目录,两者互不影响。
#创建配置文件
先创建父目录,再创建配置文件:
> $dir = Split-Path -Parent $PROFILE
> New-Item -ItemType Directory -Path $dir -Force | Out-Null
> New-Item -ItemType File -Path $PROFILE -Force | Out-Null
使用编辑器打开配置文件(code 需要安装 VS Code,Windows 上也可使用记事本):
> code $PROFILE
> notepad $PROFILE
编辑并保存后,重新加载配置:
> . $PROFILE
#常用自定义
#别名
Set-Alias -Name ll -Value Get-ChildItem
#函数
function Get-Today {
Get-Date -Format 'yyyy-MM-dd'
}
#提示符
prompt 函数的返回值会作为命令提示符:
function prompt {
"PS $(Get-Location)> "
}
#环境变量
$env:EDITOR = 'code'
这些设置只在当前会话中有效,但配置文件会在每次启动时重新执行,因此效果等同于持久配置。
#注意事项
- 配置文件会在每次启动对应宿主时执行,应保持简洁,避免耗时操作。
- 配置文件中出现错误时,每次启动都会显示错误信息,建议先用
pwsh -NoProfile排查。 - 使用
pwsh -NoProfile可以临时跳过配置文件启动。 - 不同宿主(如 VS Code 集成终端、Windows Terminal)可能加载不同的配置文件。