Не знал о CDPATH раньше.Хорошо знать.Я подытожил ниже для Powershell:
function cd2 {
param($path)
if(-not $path){return;}
if((test-path $path) -or (-not $env:CDPATH)){
Set-Location $path
return
}
$cdpath = $env:CDPATH.split(";") | % { $ExecutionContext.InvokeCommand.ExpandString($_) }
$npath = ""
foreach($p in $cdpath){
$tpath = join-path $p $path
if(test-path $tpath){$npath = $tpath; break;}
}
if($npath){
#write-host -fore yellow "Using CDPATH"
Set-Location $npath
return
}
set-location $path
}
Это не будет идеально, но работает ожидаемым образомВы можете продлить это, я думаю.Добавьте его в свой профиль.При необходимости также добавьте псевдоним, например, так:
set-alias -Name cd -value cd2 -Option AllScope