1 回答

TA貢獻1966條經驗 獲得超4個贊
這是因為$HISTFILE、$HISTSIZE和$SAVEHIST不是默認情況下的環境變量,而只是通過以下方式設置的shell 變量oh-my-zsh:
## History file configuration
[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
[ "$HISTSIZE" -lt 50000 ] && HISTSIZE=50000
[ "$SAVEHIST" -lt 10000 ] && SAVEHIST=10000
這些是您在使用inecho之前使用時看到的值。export$HOME/.zshrc
區分環境變量和 shell 變量很重要:
子進程可以訪問環境變量,但 shell 變量不能。您可以通過簡單地創建一個子進程來驗證此語句:
$ # Child processes don't inherit shell variables
$ key=value; sh -c 'echo "key=$key"'
key=
$ # They do, however, inherit environment variables
$ export key=value; sh -c 'echo "key=$key"'
key=value
為了能夠訪問子進程中的 shell 變量,您可以export這樣做,就像您在以下代碼中所做的那樣$HOME/.zshrc:
$ key=value; export key; sh -c 'echo "key=$key"'
key=value
現在,要查看特定變量是否為環境變量echo,您可以直接檢查environment 變量列表,而不是使用 。
$ env | grep -i "shell"; echo $?
SHELL=/usr/bin/zsh
0
事實上$SHELL,環境變量也是如此?,F在對于歷史變量:
$ env | grep -iE "histfile|histsize|savehist"; echo $?
1
退出代碼為 1,表示無法在環境變量列表中找到這些名稱。
- 1 回答
- 0 關注
- 212 瀏覽
添加回答
舉報