我在touch
中创建了$profile
的别名,但是我也使用PSCX似乎拥有它自己的touch
。当我运行touch
时,PSCX会运行:
$ which touch
Pscx\Set-FileTime
我如何使PowerShell比模块别名更喜欢我的别名?
答案 0 :(得分:2)
在您的$PROFILE
中:
首先,显式导入PSCX
模块-此时,该模块的touch
别名将被导入,并将替换任何现有定义:{{1} }
Import-Module PSCX
中目前不是{em> ,也要添加Import-Module PSCX
;通常,模块位于$PROFILE
环境变量中列出的目录之一中,因此它是auto-loaded, on demand。$env:PSModulePath
之前中导入模块,然后定义别名版本即可解决该问题。 然后根据需要重新定义别名;例如:$PROFILE
Set-Alias touch touch.exe
强行重新导入模块,您的别名将再次被替换。注意:所讨论的特定别名不是必需的,而是为了替换用Import-Module -Force PSCX
定义的别名(对于内置别名,例如-Option AllScope
和dir
,则为true ),您将面临两个次优的选择:
要么:使用select
重新定义,但这意味着 all 范围将看到新的定义;例如-Option AllScope
。
或:先删除原始别名-例如Set-Alias -Option AllScope touch touch.exe
(PSv6 +:Remove-Item alias:touch
)-然后将定义为是必需的,但这意味着其他作用域将不再看到原始定义。
答案 1 :(得分:0)
将其作为答案而不是评论,以便我可以输入更多文本。
请参见https://serverfault.com/questions/452430/how-to-override-the-default-dir-alias-in-powershell
意见如下:
但是,根据您的使用情况,我强烈建议您不要在任何脚本或模块中使用别名,因为它们可以更改并且可能无法执行您想要的操作。
如果您真的想使用别名,我可能会避免所有这些,并创建一个仍然有意义的无冲突别名。也许tf
或tfile
用于TouchFile。