Como Encontrar Caminhos de Programas no Sistema com exec.LookPath em Go
Comecei um novo projeto que precisa verificar se alguns programas estão instalados no sistema e obter seus caminhos completos. Para isso, utilizei a função exec.LookPath
do pacote os/exec
.
A função exec.LookPath
busca um executável nos diretórios listados na variável de ambiente PATH
. Se não encontrar, retorna um erro. Portanto, criei a função programPath
que recebe o nome do programa e retorna o caminho do executável e um booleano indicando se o programa foi encontrado.
func programPath(name string) (string, bool) {
s, err := exec.LookPath(name)
if err != nil {
return "", false
}
return s, true
}
Agora, posso usar a função programPath
para verificar se os programas necessários estão instalados no sistema e obter seus caminhos completos. O programa a seguir é um exemplo de como isso funciona.
func main() {
prgs := []string{
"lua",
"rsync",
"ssh",
}
for _, p := range prgs {
s, ok := programPath(p)
if ok {
fmt.Printf("%s: %s\n", p, s)
}
}
}
Dessa forma, consigo verificar se os programas e dependências estão instalados no sistema e usar o caminho para chamar os executáveis diretamente. Além disso, usar o caminho completo do executável é uma boa prática para evitar que o programa seja substituído por outro com o mesmo nome em um diretório que aparece antes no PATH
.
Vídeo com a explicação e execução do código: