我正在使用zsh,并且正在尝试访问这些环境变量:
$ echo $HISTFILE
/home/amir/.zsh_history
$ echo $HISTSIZE
50000
$ echo $SAVEHIST
10000
但是os.LookupEnv
返回"", false
所有三个,并且os.Getenv
自然地返回一个空字符串:
package main
import (
"fmt"
"os"
)
func main() {
histfile, found := os.LookupEnv("HISTFILE")
if found {
fmt.Println(histfile)
} else {
fmt.Println("$HISTFILE not found")
}
histsize, found := os.LookupEnv("HISTSIZE")
if found {
fmt.Println(histsize)
} else {
fmt.Println("$HISTSIZE not found")
}
savehist, found := os.LookupEnv("SAVEHIST")
if found {
fmt.Println(savehist)
} else {
fmt.Println("$SAVEHIST not found")
}
}
$ go run main.go
$HISTFILE not found
$HISTSIZE not found
$SAVEHIST not found
现在,如果我export将这些变量放入$HOME/.zshrc:
$ grep -iE "histfile|histsize|savehist" $HOME/.zshrc
export HISTFILE="$HOME/.zsh_history"
export HISTSIZE=1000000
export SAVEHIST=1000000
然后它工作并返回正确的值:
$ go run hyst.go
/home/amir/.zsh_history
1000000
1000000
当我没有显式导出这些变量时,$HISTSIZE和的值$SAVEHIST是不同的,但它们不为空。那么为什么这些函数会为这些变量返回空字符串呢?
慕标5832272
相关分类