前言
嵌入式新手在 Ubuntu 配置交叉编译工具链时,几乎只会看到export PATH=$PATH:/xxx这一种写法,对老师讲的通用公式export 变量名=值非常困惑。
为什么别的变量可以直接赋值,唯独 PATH 要拼接?引号什么时候加、什么时候不用?永久配置到底用.bashrc还是profile?
一、export 通用万能语法(所有环境变量都遵守)
标准模板
export 变量名=值核心规则
= 左右绝对不能有空格,否则直接报错
export:将变量升级为全局变量,内核编译、Shell 脚本都能识别
不加 export 仅当前终端临时有效
嵌入式高频非 PATH 变量(编译内核必用)
这类变量直接覆盖赋值,不需要拼接旧值:
# CPU架构 export ARCH=arm64 # 交叉编译器前缀 export CROSS_COMPILE=aarch64-linux-gnu- # 内核源码路径 export KERNEL_SRC=/home/ubuntu/linux查看变量:echo $ARCH
二、PATH 环境变量详解(嵌入式重点)
PATH 是系统命令搜索路径。执行 ls、gcc、交叉编译器时,系统会按 PATH 里的目录依次查找程序,多个目录用:分隔。
1. 绝对不能写的致命错误
# 千万不要直接覆盖!会清空所有系统命令 export PATH=/mnt/hgfs/2-shell一旦执行,ls、sudo、gcc 全部失效。
2. 正确 PATH 追加写法(课堂标准写法)
export PATH=$PATH:/mnt/hgfs/CS2618/2-Linux基础/2-code/2-shell原理:
$PATH:保留系统原有所有路径,保护系统命令::Linux 路径分隔符后面路径:新增自己的工具链、脚本目录
3. 引号完整讲解(新手最容易踩坑)
# 写法1:课堂简写,临时输入完全可用 export PATH=$PATH:/mnt/hgfs/CS2618/2-Linux基础/2-code/2-shell # 写法2:规范双引号 "" ,推荐写入永久配置 export PATH="$PATH:/mnt/hgfs/CS2618/2-Linux基础/2-code/2-shell" # 写法3:错误!禁止使用单引号 '' export PATH='$PATH:/mnt/hgfs/xxx'详细区别:
无引号:临时手动输入简单路径没问题
双引号 "":可以解析
$PATH,兼容空格、中文、复杂路径,适合永久配置单引号 '':完全不解析任何 $ 符号,会把
$PATH当成普通文本字符串,导致路径赋值彻底失效,绝对禁止!
4. PATH 两种优先级写法
# 追加末尾(日常推荐,系统命令优先) export PATH=$PATH:/opt/gcc-arm/bin # 放最前面(调试专用,自己的工具链优先) export PATH=/opt/gcc-arm/bin:$PATH5. 底层逻辑统一
- PATH 不是特殊语法,只是通用公式的变形:
- 通用公式:
export 变量=值 - PATH 逻辑:
export PATH=旧PATH内容+新目录
三、永久环境变量两种配置文件(必区分)
1. 用户级配置 ~/.bashrc(个人开发首选)
只对当前用户生效、安全、无风险、嵌入式开发默认使用。
vim ~/.bashrc source ~/.bashrc2. 系统级配置 /etc/profile(全局所有用户)
全部用户生效,需要 root 权限,适合多人服务器统一配置。
sudo vim /etc/profile source /etc/profile注:/etc/environment系统底层路径,新手不要改。
四、两种生效方式
1. 临时生效
终端直接输入,关闭终端失效,适合临时测试。
export PATH=$PATH:/opt/gcc-arm/bin export ARCH=arm642. 永久生效
个人开发:写入
~/.bashrc多人服务器:写入
/etc/profile改完必须
source重载
五、嵌入式标准永久配置模板
# 内核编译全局参数 export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- # 交叉工具链路径 export PATH="$PATH:/opt/gcc-arm/bin" # 课程脚本路径 export PATH="$PATH:/mnt/hgfs/CS2618/2-Linux基础/2-code/2-shell"六、高频常用命令
echo $PATH # 查看当前路径 echo $ARCH # 查看自定义变量 unset ARCH # 删除环境变量 source ~/.bashrc # 重载个人配置 source /etc/profile # 重载全局配置七、核心总结
export 变量=值是所有环境变量的通用语法。PATH 不能直接覆盖,必须用
$PATH:拼接,防止系统命令报废。临时命令可不带引号,永久配置必须双引号 "",禁止单引号 ''。
个人开发用
~/.bashrc,多人服务器统一用/etc/profile。