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