Я пробовал исходную команду из моего go кода после записи переменных env в файл / etc / enviornment.
Ниже приведен пример кода.
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"strings"
)
func main() {
address := "localhost:9090"
file, err := os.OpenFile("/etc/environment", os.O_RDWR, 0644)
defer file.Close()
if err != nil {
panic(err)
}
input, err := ioutil.ReadAll(file)
if err != nil {
log.Fatalln(err)
}
lines := strings.Split(string(input), "\n")
for i, line := range lines {
if strings.Contains(line, "HTTP_PROXY") {
lines[i] = "HTTP_PROXY=" + address
} else {
if i == (len(lines) - 1) {
lines[i] = "HTTP_PROXY=" + address
}
}
}
output := strings.Join(lines, "\n")
err = ioutil.WriteFile("/etc/environment", []byte(output), 0644)
if err != nil {
log.Fatalln(err)
}
cmd := exec.Command("bash", "-c", "source /etc/environment")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Run()
fmt.Println("cmd=================>", cmd, err)
if err != nil {
fmt.Println(err)
}
}
Он не возвращает никаких ошибок
Но когда я пытаюсь проверить свой HTTP_PROXY при использовании env | grep -i proxy
, я не вижу, чтобы это отражалось. Я вижу, что изменение сделано только после перезапуска системы или повторного запуска исходной команды с другого терминала.
Все, что я хочу, - это изменить прокси-сервер os с кода go без перезапуска системы.
Если есть какой-либо другой подход к этому, просьба также упомянуть об этом.