Linux 用户&环境变量
| 环境变量 | 描述 | 示例值 | 设置位置 | 生效方式 |
|---|---|---|---|---|
| PATH | 定义了系统查找可执行文件的目录列表 | /usr/local/bin:/usr/bin:/bin | /etc/environment, ~/.bashrc, ~/.profile | 重启终端或执行 source 命令 |
| HOME | 当前用户的主目录路径 | /home/user | 自动设置 | 自动 |
| USER/USERNAME | 当前登录用户的用户名 | user | 自动设置 | 自动 |
| SHELL | 当前用户的默认shell | /bin/bash | 自动设置 | 自动 |
| LANG/LC_ALL | 语言和字符集设置,影响程序的本地化输出 | en_US.UTF-8 | /etc/default/locale, ~/.bashrc | 登录时或 source |
| LOGNAME | 记录当前登录的用户名 | user | 自动设置 | 自动 |
| PWD | 当前工作目录的绝对路径 | /home/user/documents | 自动设置 | 自动 |
| LD_LIBRARY_PATH | 动态链接库的搜索路径 | /usr/local/lib | ~/.bashrc, 程序启动脚本 | 重启相关进程或登录 |
#**gcc找到头文件的路径** 内定目录: /usr/include; /usr/local/include
C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
export C_INCLUDE_PATH
#**g++找到头文件的路径**
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
export CPLUS_INCLUDE_PATH
#**找到动态链接库的路径** 内定目录: /lib; /usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/hiklib
#**找到静态库的路径**
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH- 用户级设置:修改
~/.bashrc、~/.bash_profile、~/.profile等文件,仅影响当前用户。 - 即时生效:使用
export VAR_NAME=value命令可以在当前shell会话中临时设置变量,但重启终端后失效
系统级
/etc/profile 和 /etc/profile.d/目录下的sh文件, 这两个配置的环境变量, 对所有用户生效
编辑环境变量文件
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-openjdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:/opt/nodejs/node-v24.14.0-linux-arm64/bin
最后在更新
source /etc/profile
在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。
#(Ubuntu和Debian中是/etc/bash.bashrc)
/etc/bashrc用户级
修改/etc/environment、/etc/profile、/etc/bash.bashrc等文件,影响所有用户。
~/.profile
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己使用的shell信息。
~/.bashrc
当用户登录时以及每次打开新的shell时该文件都将被读取,不推荐在这里配置用户专用的环境变量,因为每开一个shell,该文件都会被读取一次,效率肯定受影响。
~/.bash_profile 或 ~./bash_login -
如果有其中的一个文件存在的话, 当启动的是一个 登录shell时,Bash 会执行该文件而不会执行 /.profile ;
如果两个文件都存在的话,Bash 将会优先执行/.bash_profile 而不是~/.bash_login ;
然而, 默认情况下,这些文件不会影响图形会话。
~/.bash_logout
当每次退出系统(退出bash shell)时执行该文件。
临时环境变量
临时设置(仅当前会话有效)
# 设置变量(等号两侧不能有空格)
export MY_VAR="value"
# 添加到 PATH
export PATH=$PATH:/new/path
# 使用变量
echo $MY_VAR找到命令可执行文件的位置 (which)
Linux which命令用于查找文件, which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which ffmpeg
提一下在windows系统上是 where ffmpeg
#ifdef _WIN32
string ffmpeg_bin = trim(System::execute("where ffmpeg"));
#else
string ffmpeg_bin = trim(System::execute("which ffmpeg"));
#endif