Golang : Get absolute path to binary for os.Exec function with exec.LookPath
Sometimes it is good to tell our Golang program to execute exactly which binary file based on the path. For instance, there will be situation where due to poor system administration on client's machine....possible...duplicate binaries might caused unwanted/weird result due to different versions.
Before we can execute a binary with os.Exec()
, Go needs to know the absolute path to the binary. This can be accomplish with the exec.LookPath()
function.
If the path returned by exec.LookPath()
function is not what you after, then you want to change the path variable before executing.
For example :
package main
import (
"fmt"
"os/exec"
)
func main() {
path, err := exec.LookPath("dig")
if err != nil {
panic(err)
}
fmt.Println("Will be executing the binary at :", path)
// if path is not what you after, assign new string value to path
cmd := exec.Command(path, "any", "google.com")
out, err := cmd.Output()
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Print(string(out))
}
Sample output :
Will be executing the binary at : /usr/bin/dig
Reference :
See also : Golang : Execute shell command
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+15.7k Golang : How to reverse elements order in map ?
+4.7k Golang : Calculate a pip value and distance to target profit example
+7.7k Golang : What fmt.Println() can do and println() cannot do
+13.6k Golang : convert(cast) string to float value
+45.9k Golang : Encode image to base64 example
+7.2k Golang : Gorrila set route name and get the current route name
+10.3k Golang : Interfacing with PayPal's IPN(Instant Payment Notification) example
+11.3k Golang : Secure file deletion with wipe example
+39.2k Golang : Remove dashes(or any character) from string
+19.6k Golang : How to run your code only once with sync.Once object
+5.1k Golang : Qt update UI elements with core.QCoreApplication_ProcessEvents
+12.5k Golang : http.Get example