先对下面的指令分别进行分析:
$ 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
总结
这些命令的组合用于配置和管理运行程序所需的环境:
- 查看环境变量 (
env
)。 - 定义
MACA_PATH
,指向特定目录。 - 修改
PATH
,增加可执行文件搜索路径。 - 修改
LD_LIBRARY_PATH
,增加动态库搜索路径。
这样设置后,运行依赖 ${MACA_PATH}
路径中程序和库的命令会正常执行,而无需手动指定完整路径。
通过 export
设置的环境变量 默认情况下只在当前 Shell 会话中生效。也就是说:
- 当前会话:你可以正常使用设置的环境变量。
- 下次登录或新开终端:需要重新设置这些环境变量,除非将其永久保存。
解决方法:让环境变量永久生效
如果你希望环境变量在每次登录时自动加载,可以将它们添加到 Shell 的配置文件中:
1. 对于单用户设置
将 export
命令添加到当前用户的 Shell 配置文件,例如:
-
Bash 用户:
~/.bashrc
或~/.bash_profile
-
Zsh 用户:
~/.zshrc
步骤:
- 编辑配置文件:
nano ~/.bashrc # 或 nano ~/.zshrc
- 在文件末尾添加你的
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
- 保存并退出。
- 运行以下命令使配置文件立即生效:
source ~/.bashrc
2. 对于全局设置(所有用户生效)
将环境变量添加到全局配置文件:
- 一般是
/etc/profile
或/etc/environment
(全系统范围)。
步骤:
- 编辑全局配置文件:
sudo nano /etc/profile
- 添加
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
- 保存并退出。
- 运行以下命令重新加载全局配置:
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. 测试变量生效情况
可以通过以下方法验证环境变量是否正确加载:
- 修改环境配置文件(如
~/.bashrc
)。 - 执行
source ~/.bashrc
。 - 使用以下命令检查变量:
echo $MACA_PATH echo $PATH echo $LD_LIBRARY_PATH