我想运行一个命令,在当前目录中查找文件.mything-rc
。我想在cd
进行检查时是否存在该文件。
我的意思是,我的命令不会调用Set-Location
,如果用户调用Set-Location
,我希望自动执行某些操作......类似于nvm
在bash中执行的操作cd
在.nvmrc
的文件夹中,它会自动运行命令nvm use ...
如何检测$pwd
已更改并运行我的命令?
答案 0 :(得分:0)
您可以将自定义ScriptBlock
附加到现有prompt
函数以检查目录更改,然后执行任何操作:
$currentPrompt = (Get-Command prompt).ScriptBlock
$newLogic = { $global:old = $global:new; $global:new = Get-Location; if($null -ne $global:old -and $global:new.Path -ne $global:old.Path){ Write-Host "Location changed from '$global:old' to '$global:new'." } }
$newPrompt = [scriptblock]::Create("$currentPrompt; $newLogic")
function prompt { & $newPrompt }
请注意,这取决于全局变量,因此您当然应该选择比old
和new
更好的变量名称。