1 // Copyright 2023 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package cfg 6 7 import ( 8 "cmd/go/internal/par" 9 "os/exec" 10 ) 11 12 var lookPathCache par.ErrCache[string, string] 13 14 // LookPath wraps exec.LookPath and caches the result 15 // which can be called by multiple Goroutines at the same time. 16 func LookPath(file string) (path string, err error) { 17 return lookPathCache.Do(file, 18 func() (string, error) { 19 return exec.LookPath(file) 20 }) 21 } 22