如何在cd($ pwd更改)后运行命令?

时间:2017-08-18 12:16:29

标签: powershell

我想运行一个命令,在当前目录中查找文件.mything-rc。我想在cd进行检查时是否存在该文件。

我的意思是,我的命令不会调用Set-Location,如果用户调用Set-Location,我希望自动执行某些操作......类似于nvm在bash中执行的操作cd.nvmrc的文件夹中,它会自动运行命令nvm use ...

如何检测$pwd已更改并运行我的命令?

1 个答案:

答案 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 }

请注意,这取决于全局变量,因此您当然应该选择比oldnew更好的变量名称。