我一直在研究,我一生都无法理解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管理此目录中的模块。