Ubuntu嵌入式开发 export环境变量

前言

嵌入式新手在 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
  1. 系统级配置 /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 
# 重载全局配置

七、核心总结

  1. export 变量=值所有环境变量的通用语法

  2. PATH 不能直接覆盖,必须用 $PATH: 拼接,防止系统命令报废。

  3. 临时命令可不带引号,永久配置必须双引号 "",禁止单引号 ''

  4. 个人开发用 ~/.bashrc,多人服务器统一用 /etc/profile

相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
这个DBA有点耶2 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang2 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot