Linux环境变量

时间:2024-11-21 07:49:02

先对下面的指令分别进行分析:
$ env
$ export MACA_PATH=/opt/maca
$ export PATH= M A C A P A T H / m x g p u l l v m / b i n : {MACA_PATH}/mxgpu_llvm/bin: MACAPATH/mxgpullvm/bin:{MACA_PATH}/bin:$PATH
$ export LD_LIBRARY_PATH= M A C A P A T H / l i b : {MACA_PATH}/lib: MACAPATH/lib:LD_LIBRARY_PATH


1. $ env

  • 含义
    列出当前 Shell 会话中的所有环境变量及其值。

  • 作用

    • 用于查看系统中的环境变量(例如 PATH, LD_LIBRARY_PATH, HOME 等)。
    • 可以用来调试和检查当前环境变量的配置是否正确。
  • 示例输出

    PATH=/usr/local/bin:/usr/bin:/bin
    HOME=/home/user
    SHELL=/bin/bash
    LD_LIBRARY_PATH=/usr/local/lib
    

2. $ export MACA_PATH=/opt/maca

  • 含义
    设置一个新的环境变量 MACA_PATH 并将其值设为 /opt/maca

  • 作用

    • 定义一个变量供当前 Shell 会话及其子进程使用。
    • 后续命令中,变量 MACA_PATH 可以作为路径的引用来简化配置。
  • 等效效果

    MACA_PATH=/opt/maca
    export MACA_PATH
    

    这两行代码组合等同于 export MACA_PATH=/opt/maca


3. $ export PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:$PATH

  • 含义
    修改环境变量 PATH,将新的路径添加到搜索路径中:

    • ${MACA_PATH}/mxgpu_llvm/bin
    • ${MACA_PATH}/bin
    • 并保持原有的 PATH 值。
  • 作用

    • PATH 是用于存储可执行程序搜索路径的环境变量。
    • 当运行命令时,Shell 会按 PATH 中定义的目录顺序查找对应的可执行文件。
    • 修改后,Shell 会优先搜索 ${MACA_PATH}/mxgpu_llvm/bin${MACA_PATH}/bin 中的命令。
  • 示例
    如果之前 PATH/usr/bin:/bin,运行上述命令后变成:

    /opt/maca/mxgpu_llvm/bin:/opt/maca/bin:/usr/bin:/bin
    

4. $ export LD_LIBRARY_PATH=${MACA_PATH}/lib:$LD_LIBRARY_PATH

  • 含义
    修改环境变量 LD_LIBRARY_PATH,将新的库搜索路径添加到现有的路径中:

    • ${MACA_PATH}/lib
    • 并保持原有的 LD_LIBRARY_PATH 值。
  • 作用

    • LD_LIBRARY_PATH 用于指定动态链接库(Shared Libraries)查找路径。
    • 当程序运行时,系统动态加载器会根据该路径查找所需的库文件(如 .so 文件)。
  • 示例
    如果之前 LD_LIBRARY_PATH/usr/local/lib,运行上述命令后变成:

    /opt/maca/lib:/usr/local/lib
    

总结

这些命令的组合用于配置和管理运行程序所需的环境:

  1. 查看环境变量 (env)。
  2. 定义 MACA_PATH,指向特定目录。
  3. 修改 PATH,增加可执行文件搜索路径。
  4. 修改 LD_LIBRARY_PATH,增加动态库搜索路径。

这样设置后,运行依赖 ${MACA_PATH} 路径中程序和库的命令会正常执行,而无需手动指定完整路径。

通过 export 设置的环境变量 默认情况下只在当前 Shell 会话中生效。也就是说:

  • 当前会话:你可以正常使用设置的环境变量。
  • 下次登录或新开终端:需要重新设置这些环境变量,除非将其永久保存。

解决方法:让环境变量永久生效

如果你希望环境变量在每次登录时自动加载,可以将它们添加到 Shell 的配置文件中:


1. 对于单用户设置

export 命令添加到当前用户的 Shell 配置文件,例如:

  • Bash 用户:~/.bashrc~/.bash_profile
  • Zsh 用户:~/.zshrc

步骤

  1. 编辑配置文件:
    nano ~/.bashrc   # 或 nano ~/.zshrc
    
  2. 在文件末尾添加你的 export 命令,例如:
    export MACA_PATH=/opt/maca
    export PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:$PATH
    export LD_LIBRARY_PATH=${MACA_PATH}/lib:$LD_LIBRARY_PATH
    
  3. 保存并退出。
  4. 运行以下命令使配置文件立即生效:
    source ~/.bashrc
    

2. 对于全局设置(所有用户生效)

将环境变量添加到全局配置文件:

  • 一般是 /etc/profile/etc/environment(全系统范围)。

步骤

  1. 编辑全局配置文件:
    sudo nano /etc/profile
    
  2. 添加 export 命令,例如:
    export MACA_PATH=/opt/maca
    export PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:$PATH
    export LD_LIBRARY_PATH=${MACA_PATH}/lib:$LD_LIBRARY_PATH
    
  3. 保存并退出。
  4. 运行以下命令重新加载全局配置:
    source /etc/profile
    

3. 特殊情况

如果你的程序需要在 图形界面登录(如 GNOME, KDE) 或启动 服务 时加载这些环境变量:

  • 推荐修改 /etc/environment 文件(该文件不支持 export)。
  • 示例
    MACA_PATH=/opt/maca
    PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:$PATH
    LD_LIBRARY_PATH=${MACA_PATH}/lib:$LD_LIBRARY_PATH
    
    修改后需要重新登录系统。

结论

  • 使用 export 设置的变量在 当前会话有效
  • 如果希望永久生效:
    • 对个人用户:添加到 ~/.bashrc~/.zshrc
    • 对所有用户:添加到 /etc/profile/etc/environment
  • 配置完成后重启 Shell 或运行 source 命令即可生效。

如何判断自己是bash用户还是zsh用户

1. 判断当前 Shell

运行以下命令确认当前使用的 Shell:

echo $SHELL
  • 如果输出是 /bin/bash,你的 Shell 是 Bash。
  • 如果是其他路径,例如 /bin/zsh,则是 Zsh 等。

2. 环境配置文件位置及作用

对于 Bash Shell,环境配置文件主要有以下几种,作用和适用场景如下:

(1)用户级文件:仅影响当前用户
  • ~/.bashrc
    • 交互式非登录 Shell 自动加载。
    • 适用于普通终端(例如打开新终端或运行 bash)。
  • ~/.bash_profile~/.profile
    • 登录 Shell 自动加载。
    • 适用于通过 SSH 登录或首次打开终端。
    • ~/.bash_profile 优先级高于 ~/.profile

推荐:将环境变量写入 ~/.bashrc,并确保 ~/.bash_profile 包含以下行:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi
(2)系统级文件:影响所有用户
  • /etc/profile
    • 登录 Shell 会自动加载。
    • 常用于全局环境变量。
  • /etc/bash.bashrc
    • 交互式 Shell 自动加载。
    • 在所有用户的 Bash Shell 会话中生效。
  • /etc/environment
    • 简单的键值对文件,适用于全局变量配置,不支持 export
    • 常用于图形界面登录或服务启动场景。

3. 确定环境变量文件的位置

  • 查询用户级文件
    通过以下命令查看文件是否存在:

    ls -l ~/.bashrc ~/.bash_profile ~/.profile
    

    如果某些文件不存在,可以手动创建。

  • 查询系统级文件
    查看系统全局配置文件:

    ls -l /etc/profile /etc/bash.bashrc /etc/environment
    

4. 测试变量生效情况

可以通过以下方法验证环境变量是否正确加载:

  1. 修改环境配置文件(如 ~/.bashrc)。
  2. 执行 source ~/.bashrc
  3. 使用以下命令检查变量:
    echo $MACA_PATH
    echo $PATH
    echo $LD_LIBRARY_PATH