首页 > 解决方案 > shell中的环境变量更改但不会导出

问题描述

我在 shell 中设置永久环境变量时遇到问题。例如

HISTSIZE=0
export HISTSIZE
echo $HISTSIZE

变量将在 shell 中更改。但是,如果我打开另一个选项卡或关闭并重新打开 shell,变量将恢复到其原始值 1000。

我还尝试使用用 ~/.bash_profile 编写的脚本来获取变量。但它只在该特定外壳中留下相同的变量问题。如何创建永久更改?

标签: linuxshellenvironment-variables

解决方案


如果您打开一个新选项卡,则新 shell 的父进程不是您当前的 shell,而是您的终端模拟器,因此导出HISTSIZE不会影响新 shell 的环境。

由于HISTSIZE仅由外壳本身使用,因此根本不需要导出它。设置它的值,.bashrc以便任何新的交互式 shell 都可以初始化该值。

HISTSIZE=0

如果您的终端仿真器配置为启动登录 shell(在 macOS 上很常见,我认为在 Linux 中则更少),.bashrc则不会使用。在这种情况下,我建议添加. .bashrc到您的最后.bash_profile,以便交互式登录 shell 的初始化与交互式非登录 shell 相同。


推荐阅读