前言
嵌入式新手在 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:$PATH
5. 底层逻辑统一
- PATH 不是特殊语法,只是通用公式的变形:
- 通用公式:
export 变量=值 - PATH 逻辑:
export PATH=旧PATH内容+新目录
三、永久环境变量两种配置文件(必区分)
1. 用户级配置 ~/.bashrc(个人开发首选)
只对当前用户生效、安全、无风险、嵌入式开发默认使用。
vim ~/.bashrc
source ~/.bashrc
- 系统级配置 /etc/profile(全局所有用户)
全部用户生效,需要 root 权限,适合多人服务器统一配置。
sudo vim /etc/profile
source /etc/profile
注:/etc/environment 系统底层路径,新手不要改。
四、两种生效方式
1. 临时生效
终端直接输入,关闭终端失效,适合临时测试。
export PATH=$PATH:/opt/gcc-arm/bin
export ARCH=arm64
2. 永久生效
-
个人开发:写入
~/.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。