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,环境变量也是如此。现在对于历史变量:
$ env | grep -iE "histfile|histsize|savehist"; echo $?
1
退出代码为 1,表示无法在环境变量列表中找到这些名称。
- 1 回答
- 0 关注
- 176 浏览
添加回答
举报