代码之家  ›  专栏  ›  技术社区  ›  mikemaccana

如何使自己的别名覆盖模块的别名?

  •  1
  • mikemaccana  · 技术社区  · 7 年前

    touch 在我的 $profile 不过,我也使用PSCX似乎有它自己的 . 当我跑的时候 触摸

    $ which touch
    Pscx\Set-FileTime
    

    如何使PowerShell更喜欢我的别名而不是模块别名?

    2 回复  |  直到 7 年前
        1
  •  2
  •   mklement0    7 年前

    在你的 $PROFILE :

    • ,显式导入 PSCX 模块-在那一点上,模块是 touch Import-Module PSCX

      • 导入模块PSCX 即使现在 不是吗 $配置文件 auto-loaded , on demand ,因为它位于 $env:PSModulePath
        按需导入—其时间不可预测(每当您第一次碰巧从模块调用命令时)—会阻止可靠的别名替换;正在强制导入 $配置文件 之前 您定义的别名版本解决了这个问题。
    • 那么 根据需要重新定义别名;例如。: Set-Alias touch touch.exe

      • 警告 :如果某人 强制再进口 模块稍后将与 Import-Module -Force PSCX

    注意:对于有问题的特定别名,这不是必需的,而是为了替换用定义的别名 -Option AllScope (对于内置别名,如 dir select ),您将面临两个次优选择:

    • 或者: 重新定义 它与 -选项AllScope 然而,这意味着 范围将看到新的定义;例如。, Set-Alias -Option AllScope touch touch.exe .

    • 删除 Remove-Item alias:touch (PSv6+: Remove-Alias touch )-然后呢 定义 但是,这意味着其他作用域将不再看到原始定义。

        2
  •  0
  •   Kory Gill    7 年前

    看到了吗 https://serverfault.com/questions/452430/how-to-override-the-default-dir-alias-in-powershell

    但是,根据您的使用情况,我强烈建议不要在任何脚本或模块中使用别名,因为它们可能会被更改,并且可能不会执行您想要的操作。

    如果您真的想使用别名,我可以避免所有这些,创建一个无冲突的别名,这仍然是有意义的。也许 吧 tf tfile

    推荐文章