当前位置:首页>Linux>每日一问|Linux的内置变量和环境变量

每日一问|Linux的内置变量和环境变量

  • 2026-09-06 13:03:40
每日一问|Linux的内置变量和环境变量

哈喽~ 各位运维、服务器小伙伴们,今天遇到个疑惑,一个变量一直没找到在哪定义的,但是一直有默认值, 在这里把自己学习内容记录一下,跟大家也一同学习下, 加深理解~!

一、今天遇到一个问题

最近在学习历史命令相关的变量时,发现服务器上/etc/profile文件中没有配置HISTSIZE变量的默认值,但是我history显示的时候,仍然只有部分历史数据, 这是为什么呢?

三、实操命令(复制粘贴就能用,避免输错)

下面就让我们带着问题来学习,每次都事半功倍。

1. HISTSIZE是环境变量吗? 

[root@test ~]# grep HISTSIZE /etc/profile[root@test ~]# env|grep $HISTSIZE[root@test ~]# set|grep HISTSIZEHISTZISE=500
✨ 结果解读:
  • HISTSIZE 默认是 shell 内置局部变量,export 后才是环境变量;
  • 不配置 /etc/profile完全没问题,bash 自带兜底默认值500 ,变量一定存在不会消失
  • shell内置变量使用 set|grep 变量名 查看默认值

2.发现HISTSIZE是shell内置变量,不配置也有默认值。那linux还有哪些内置变量呢? 

  • 历史记录相关

HISTSIZE:内存最大缓存命令条数HISTFILE:历史文件路径~/.bash_historyHISTFILESIZE:历史文件最大行数HISTCONTROL:历史去重 / 忽略空格规则HISTIGNORE:过滤不保存的命令
  • 提示符相关
PS1:主命令提示符(登录后前面那串)PS2:多行换行续行提示符(>)PS3:select 循环菜单提示符PS4:脚本调试 set -x 输出前缀

3. Linux的内置变量和环境变量有什么区别呢?

  • 内置变量:仅当前终端会话有效,子 Shell、脚本无法继承,env 看不到,只有 set 能看到。
  • 环境变量:父子进程全部共享继承,env / printenv 可查看。

五、总结&避坑提醒(重点划重点)

1. 变量无在.bash_profile或.bashrc等文件无配置, 并且输出有值时,需确认是否是内置变量。
2. 环境变量用env查看, 内置变量用set查看即可。
3. 内置变量仅在当前终端有效,子shell无效; 环境变量父子进程全部共享继承。
你有没有遇到过没有export仍有默认值的变量吗?评论区留言说说你的踩坑经历~
喜欢记得点赞+在看,收藏起来慢慢看,后续持续更新技术/职场干货~

最新文章

随机文章