系统级环境变量应配置在/etc/environment(纯值)或/etc/profile.d/*.sh(带逻辑),避免修改用户级文件或非标准文件如/etc/bashrc;生效需重新登录或新会话验证。

系统级环境变量必须对所有用户生效,且不能依赖单个用户的 Shell 启动逻辑。直接改 ~/.bashrc 或 ~/.bash_profile 只影响当前用户,不符合“系统级”要求。
用 /etc/environment 设置纯值环境变量
/etc/environment 是最轻量、最安全的系统级配置方式,但它不支持变量展开(比如不能写 PATH="/opt/mybin:$PATH"),只接受 KEY=VALUE 格式纯文本。
- 编辑时用
sudo vim /etc/environment,追加一行如:MYTOOL_HOME=/opt/mytool - 修改后需重新登录或重启显示管理器(
systemd-logind会重载它),source或export无效 - 适合设置路径常量、服务地址、开关标志等不依赖其他变量的值
- 如果写了
$PATH或$(pwd),该行会被整个忽略,且无错误提示
用 /etc/profile 或 /etc/profile.d/ 添加带逻辑的 PATH
需要拼接路径、调用命令或条件判断时,必须用 shell 脚本方式 —— /etc/profile 或更推荐的 /etc/profile.d/*.sh。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
/etc/profile在每个登录 Shell 启动时执行一次,但仅限 login shell(比如 SSH 登录、图形界面首次终端) - 更稳妥的做法是新建
/etc/profile.d/mytool.sh(注意后缀必须是.sh),内容为:export MYTOOL_HOME=/opt/mytool<br>export PATH=$MYTOOL_HOME/bin:$PATH
- 该文件会被所有交互式 Shell(包括 GNOME Terminal、Konsole 新建窗口)自动 source,无需手动触发
- 避免在
/etc/profile末尾硬编码 PATH —— 它可能被后续/etc/profile.d/中的同名变量覆盖
为什么不要直接改 /etc/bashrc
/etc/bashrc 不是 POSIX 标准文件,很多发行版(如 Ubuntu)根本不存在;即使存在,它也只被非 login 的交互式 bash 加载(比如你打开第二个终端窗口),行为不稳定。
- Debian/Ubuntu 默认不读
/etc/bashrc,CentOS/RHEL 虽有,但仅用于 root 用户的非 login shell - 它不被
sh、dash、zsh等其他 Shell 识别,无法保证“系统级”语义 - 若误在此处 export PATH,会导致部分用户(如用 zsh 登录)完全看不到该路径
- 真正需要跨 Shell 生效的配置,必须走
/etc/environment(纯值)或/etc/profile.d/(脚本逻辑)
验证是否生效:别只信 echo $VAR
echo $VAR 只反映当前 Shell 的状态,不能证明系统级配置已加载。真正验证要模拟新会话。
- 新开一个终端窗口(不是标签页,而是全新启动的 Terminal 进程),再运行
echo $MYTOOL_HOME - 用
sudo -i切换到 root 的 login shell,检查变量是否存在 - 运行
env | grep MYTOOL_HOME,确认它出现在完整环境列表中(而非仅 Shell 变量) - 特别注意:用
su user(不带-)不会触发 profile 加载,必须用su - user或login命令
系统级环境变量最容易被忽略的点是加载时机 —— 它不响应 source,也不随子 Shell 自动继承未登录时的设置;哪怕写对了文件,没走 login 流程就看不到效果。










