我正在使用Powershell来管理计算机上某些.net项目的构建,我想为其创建别名。唯一的窍门是,我只想在包含所有代码的文件夹中使用别名。有没有办法仅在特定文件夹中应用别名?
答案 0 :(得分:0)
由于它的晦涩之处,我不推荐使用它,但是您可以通过确定交互式提示字符串的prompt
函数 动态添加和删除别名或函数,因为它被称为在每个命令之后。
请注意,PowerShell别名仅允许使用别名命令 names (或路径);也就是说,您不能在其中加入参数,这就是下面的示例改为使用 function 的原因(但是对于别名,它也可以类似地工作):
function prompt {
# Define function `gs` on demand whenever the current location is a in a Git
# repo folder, and remove it when switching to any other folder.
if (Test-Path ./.git) { function global:gs { git status $Args } }
else { Remove-Item -EA Ignore function:global:gs }
# Define the standard PS prompt string.
"PS $PWD$('>' * ($nestedPromptLevel + 1)) "
}
为减少模糊性,您可以修改提示字符串以表明特定于文件夹的命令是否有效:
function prompt {
# Define function `gs` on demand whenever the current location is a in a Git
# repo folder, and remove it when switching to any other folder.
if (Test-Path ./.git) {
$indicator = '[repo]'
function global:gs { git status $Args }
} else {
$indicator = ''
Remove-Item -EA Ignore function:global:gs
}
# Define the standard PS prompt string.
"PS $PWD $indicator$('>' * ($nestedPromptLevel + 1)) "
}
现在,只要当前位置是Git存储库文件夹,您的提示将包含子字符串[repo]
(例如PS /Users/jdoe/Projects/foo [repo]>
)。