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)
        }
    }
}

código completo

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:

Cesar Gimenes

Última modificação