我一直在研究,我一生都无法理解PSModulePath为什么是环境变量。有什么合理的理由吗?

为了进一步说明,$profile是PowerShell变量。您只需键入$profile即可调用它。这很有道理。但是,PSModulePath在PowerShell之外绝对没有任何关联或功能,但是,由于某些难以理解的决定,已将其设置为环境变量。即$PSModulePath无法查看,只能通过echo $env:PSModulePath进行查看。更加不合理的是,存在一个$PSModuleAutoLoadingPreference,它又是一个PowerShell变量,而不是环境变量。
PSModulePath变量仅对于PowerShell为100%。谁能解释这种极为奇怪的设置的原理?

最佳答案

因为在Powershell session 加载之前需要$env:PSModulePath。我相信(这里的“为什么”我可能是错的),这是因为在模块本身内定义了几个“内置” cmdlet,并且需要在启动时加载它们。值得注意的是,如果您查看$env:PSModulePath中定义的特定模块目录(这是系统模块路径),则会看到此信息:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

通常,您不想在此处安装模块,而应保持“干净”,例如,让MS管理此目录中的模块。

09-26 22:48