正确定义变量需遵循变量名=值格式且等号无空格,变量名须以字母或下划线开头、区分大小写;调用时加$前缀并推荐用双引号包裹;局部变量默认不继承,需export导出为环境变量;可用echo、set、env查看,unset删除。

在 Linux Shell 中定义和使用自定义变量很简单,但有几个关键点必须注意,否则变量会“看不见”或“用不上”。
怎么正确定义变量
定义时用 变量名=值 格式,等号两边绝对不能有空格:
-
name=susai✅ 正确(无空格) -
age=25✅ 正确(数字也按字符串处理) -
greeting=Hello World❌ 错误(含空格,会被截断为 Hello) -
greeting="Hello World"✅ 正确(加双引号包裹) -
path=/usr/local/bin:/usr/bin✅ 正确(冒号是合法字符,无需引号)
变量名只能由字母、数字、下划线组成,且必须以字母或下划线开头;区分大小写,NAME、Name、name 是三个不同变量。
怎么正确调用变量
使用变量时必须加 $ 前缀,否则 Shell 当作普通文本处理:
-
echo $name✅ 输出实际值(如 susai) -
echo name❌ 输出字面量 name -
echo "$name is here"✅ 推荐加双引号,避免空格或特殊字符引发问题 -
echo $nameishere❌ 想引用name变量却写了nameishere,Shell 会找这个完整变量名 -
echo ${name}ishere✅ 用${}明确界定变量边界
变量的作用范围:局部 vs 全局
默认定义的变量只在当前 Shell 进程中有效:
-
city=Beijing→ 在当前终端可用,执行bash进入子 Shell 后就没了 -
export city=Beijing或export city→ 变成环境变量,子进程也能继承 -
env | grep city可验证是否已导出 - 脚本里定义的变量默认不自动导出,需显式
export
查看和清理变量
快速确认变量状态和释放资源:
-
echo $name查看值 -
set | grep "^name="查看是否定义(含局部变量) -
env | grep "^name="只查已导出的环境变量 -
unset name删除变量(仅当前 Shell 生效) -
unset -v name效果同上,-v表示操作变量(非函数)
不复杂但容易忽略。











