Ce face os.Clearenv
os.Clearenv golește complet mediul procesului: după apel, os.Environ() returnează o listă goală. Procesele copil pornite după aceea primesc și ele un mediu gol (dacă nu setezi cmd.Env).
Atenție: și PATH dispare, așa că exec.Command("ls") nu mai găsește programele după nume. Funcția e utilă rar, de exemplu înainte de a rula ceva într-un mediu controlat.
Ce returnează
Nimic.
Exemple
Exemplul 1: Înainte și după
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("are variabile:", len(os.Environ()) > 0)
os.Clearenv()
fmt.Println("după Clearenv:", len(os.Environ()))
fmt.Printf("HOME = %q\n", os.Getenv("HOME"))
}
Rezultat
are variabile: true
după Clearenv: 0
HOME = ""
Exemplul 2: Procesul copil primește mediul gol
Fără PATH folosim calea completă /bin/sh.
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
os.Clearenv()
os.Setenv("SALUT", "Bună")
iesire, err := exec.Command("/bin/sh", "-c", `echo "$SALUT [HOME=$HOME]"`).Output()
fmt.Print(string(iesire))
fmt.Println("eroare:", err)
_, err = exec.LookPath("sh")
fmt.Println("LookPath fără PATH:", err)
}
Rezultat
Bună [HOME=]
eroare: <nil>
LookPath fără PATH: exec: "sh": executable file not found in $PATH
Greșeli frecvente
- Apelezi
Clearenvși apoi pornești programe după nume. FărăPATHnu sunt găsite.
Comenzi înrudite
os.Environ: Returnează toate variabilele de mediu, ca o listă de texte de forma NUME=valoare.os.Setenv: Setează o variabilă de mediu pentru programul curent; Unsetenv o șterge.exec.LookPath: Caută un program executabil în directoarele din PATH și returnează calea lui.