shell变量定义时等号两边不能有空格,如user_name="zhangsan";变量名须由字母、数字、下划线组成且不能以数字开头;局部变量默认仅当前会话有效,需export导出为全局变量才能被子shell继承;永久生效需写入~/.bashrc等配置文件并source加载。

变量定义:等号两边不能有空格
在Shell中定义变量,语法是变量名=值,中间绝对不能加空格。比如:
-
正确:
user_name="zhangsan"、port=8080 -
错误:
user_name = "zhangsan"(会当作命令执行,报“command not found”)
变量名只能由字母、数字、下划线组成,且不能以数字开头;推荐用小写+下划线风格,如 log_dir、backup_count。
局部变量 vs 全局变量:作用范围不同
直接赋值的变量默认是局部变量,只在当前Shell会话中有效,新开一个子Shell(比如敲 bash 进入)就看不见它:
-
app_env="prod"→ 当前终端可用,但bash后执行echo $app_env输出为空 - 要让子Shell也能读到,必须用
export导出,变成全局变量(也叫环境变量)
导出为全局变量的两种写法
导出操作必须在变量定义之后进行,常见方式有:
-
export app_env(先定义,再导出) -
export app_env="prod"(一步完成定义+导出)
导出后,在子Shell里执行 echo $app_env 就能正常输出 prod。注意:导出只对当前会话及其后续子进程生效,关闭终端就失效。
让变量永久生效:写入配置文件
如果希望每次登录都自动加载,需把 export 行写进Shell配置文件:
- 对当前用户生效:添加到
~/.bashrc或~/.bash_profile - 对所有用户生效:添加到
/etc/profile或/etc/bashrc
写完后执行 source ~/.bashrc 立即生效,不用重启终端。按惯例,自定义环境变量名建议大写,如 MY_APP_HOME。











