昨天已經實作完 取(get) 環境變數的部分,今天來談談怎麼 存(set) 環境變數,也就是設置環境變數
在 Linux 中可以下 export VAR=value
來設置新的變數
跟他相對應的 unset VAR
則是用來刪除一個變數
如前兩天說到的:因為環境變數是 Process 狀態的一部分,所以也不能另外開 Child Process 來做,而是以內建指令的方式來實現
Setenv
的功能跟他的名字一樣,就是設定環境變數,參數是一組 key/value,等等會用來實作 export
跟 Setenv
對應的是 Unsetenv
,看要把哪個變數刪掉就把它的 key 傳進去,等等會用來實作 unset
func executeInput(input string) error {
input = os.ExpandEnv(input)
args := strings.Split(input, " ")
// 如果指令是 export 開頭
// 就用 os.Setenv 設置環境變數
// args = ["export", "FOO=bar"]
if args[0] == "export" {
// kv = ["FOO", "bar"]
kv := strings.Split(args[1], "=")
// key = "FOO"
// val = "bar"
key, val := kv[0], kv[1]
err := os.Setenv(key, val)
return err
}
// 如果指令是 unset 開頭
// 就用 os.Unsetenv 刪除環境變數
// args = ["unset", "FOO"]
if args[0] == "unset" {
err := os.Unsetenv(args[1])
return err
}
cmd := exec.Command(args[0], args[1:]...)
// ...
}
export FOO=bar
unset FOO
今天用 os.Setenv
跟 os.Unsetenv
完成設置環境變數的功能,commit 放在這裡,有什麼問題歡迎在下面留言,沒問題的話就明天見囉