当我安装类似ffmpeg
with 的东西时winget
,它会为ffmpeg
, ffplay
, &设置永久别名ffprobe
。
winget install gyan.ffmpeg
看起来它没有向我的路径环境变量添加任何内容。如果我使用Set-Alias
PowerShell 实用程序,则所述别名是短暂的,只会持续到当前会话结束。最终,我发现我可以使用 my$profile
来表示每次启动 shell 时实例化的别名列表。
winget 是否仅使用不同的“配置文件”文件执行相同的操作?有更好的方法吗?
从帖子 如何创建永久的 PowerShell 别名中,我引用了Naigel 的精彩 答案:
不会,winget 等 cmdlet 和其他 powershell 模块会自行安装在您的 powershell 模块文件夹中。运行
import-module <name>
该模块后,现在可以使用该模块的命令。命令只是函数。要找出模块的存储位置,请在 powershell 中运行以下命令:
write-host $env:PSModulePath
如果您想复制与 winget 相同的内容,请创建一个新的 powershell 脚本,并将以下内容放入其中:
并将其保存在之前找到的路径中作为文件
*.psm1
,其中 * 当然可以替换为您想要的任何内容。我还没有发现需要实际编写自己的模块,而且我最终只是在我的 profile.ps1 中创建了函数,所以我不完全确定自动加载模块的位置是什么,以及如果您需要在模块旁边添加一个 .psd1 文件以使其正常工作。
这个答案只是为了让您知道如果无法使用 profile.ps1 的话还能怎么做。
因为 WinGet 不是特定于 PowerShell 的,所以它不能依赖于 PowerShell 的东西。相反,它确实添加到
%PATH%
(一次)。执行此操作时,它还会显示一条消息。如果您没有看到该消息,则它可能已经%PATH%
在过去被修改过。WinGet 添加%LOCALAPPDATA%\Microsoft\WinGet\Links\
(以其扩展形式)到您的用户的%PATH%
(不是系统范围的)。WinGet 在此文件夹中创建符号链接。然后可以从任何 shell 或运行提示符使用它们。
在我看来,是的,这种方法是优越的,因为它在任何地方都有效。
但是,它仅适用于
.exe
文件。如果您需要 PowerShell 特定的别名(涉及 cmdlet 或其他),则必须使用 PowerShell 方法来永久创建它们。$profile
是要走的路。