尧图精选

【Linux笔记】Linux环境变量

🕒 发布时间:2026/10/1 21:33:33 📁 来源:尧图网络
一、环境变量1.1 什么是环境变量环境变量是操作系统中用于存储系统或应用程序配置信息的键值对指定操作系统运行环境的参数核心功能它们为进程提供运行时的上下文信息例如当前用户、主目录路径、命令搜索路径等。注每个进程启动时都会继承父进程的环境变量。1.2 环境变量相关命令1.2.1env— 显示当前环境变量env # 列出所有环境变量KEYVALUE 格式 ​ 示例 ​ hamberVM-0-14-ubuntu:~$ env SHELL/bin/bash HISTSIZE1000 LANGUAGEen_US.utf8: PWD/home/hamber LOGNAMEhamber HOME/home/hamber LANGen_US.UTF-8 USERhamber PATH/home/hamber/.nvm/versions/node/v20.20.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin SSH_TTY/dev/pts/0 _/usr/bin/env OLDPWD/home/hamber/code ...常见的环境变量变量名含义示例值PATH可执行文件搜索路径/usr/local/bin:/usr/bin:/binHOME当前用户主目录/home/usernameUSER当前用户名usernameSHELL当前使用的 shell/bin/bashPWD当前工作目录/home/username/projectsLANG系统语言/字符集en_US.UTF-8EDITOR默认文本编辑器vimHOSTNAME主机名VM-0-14-ubuntuLD_LIBRARY_PATH动态库搜索路径/usr/local/lib1.2.2echo— 展开变量echo $HOME # 简单展开 hamberVM-0-14-ubuntu:~$ echo $HOME /home/hamber1.2.3export— 设置环境变量export MY_VARhello #临时设置环境变量 hamberVM-0-14-ubuntu:~$ export MY_VARhello hamberVM-0-14-ubuntu:~$ echo $MY_VAR hello1.2.4readonly— 设置只读环境变量export APP_MODEproduction #临时设置环境变量 readonly APP_MODE #将环境变量设置为只读 APP_MODEstaging # bash: APP_MODE: readonly variable unset APP_MODE # bash: unset: APP_MODE: cannot unset: readonly variable1.2.5unset— 删除环境变量unset MY_VAR # 删除变量 unset VAR1 VAR2 VAR3 # 同时删除多个 unset -v MY_VAR # 明确指定删除变量 示例 hamberVM-0-14-ubuntu:~$ env | grep MY_VAR MY_VARhello hamberVM-0-14-ubuntu:~$ unset MY_VAR hamberVM-0-14-ubuntu:~$ env | grep MY_VAR1.3 持久化配置根据 shell 类型和作用范围选择不同的配置文件Bash 用户大多数 Linux文件作用范围加载时机/etc/environment全系统所有用户系统启动时/etc/profile全系统所有用户登录 shell 启动~/.bash_profile当前用户登录 shell 启动~/.bashrc当前用户非登录交互式 shell/etc/profile.d/*.sh全系统推荐放自定义脚本登录时自动 source# ~/.bashrc — 非登录交互式 shell echo export MY_VAL hello ~/.bashrc #shell退出时环境变量不会消失 # 使修改立即生效 source ~/.bashrc二、main函数命令行参数2.1 main 函数的标准参数C/C 语言中main函数接收命令行参数的标准形式为int main(int argc, char *argv[])参数类型含义argcintargument count参数个数包含程序名本身argvchar *[]argument vector参数字符串数组例如执行命令./myapp -v hello foo bar时argc 4 argv[0] → ./myapp ← 程序名始终是第一个元素 argv[1] → -v ← 第1个用户参数 argv[2] → hello ← 第2个用户参数 argv[3] → foo bar ← 引号内的空格被保留为一个参数 argv[4] → NULL ← 标准保证argv[argc] NULL关键规则argc 1至少包含程序名。argv[argc]一定是NULL指针C 标准明确规定。Shell 在传参之前已完成变量替换、通配符展开和引号去除程序收到的是处理后的纯字符串。2.2 基本使用示例代码示例打印所有参数#include stdio.h int main(int argc, char *argv[]) { printf(参数个数: %d\n, argc); for (int i 0; i argc; i) { printf(argv[%d] \%s\\n, i, argv[i]); } return 0; }$ ./demo alpha beta gamma 参数个数: 4 argv[0] ./demo argv[1] alpha argv[2] beta argv[3] gamma2.3 第三种参数 ---envpint main(int argc, char *argv[], char *envp[])解析每个环境变量参数#include stdio.h int main(int argc, char *argv[], char *envp[]) { // envp 是以 NULL 结尾的字符串数组每项格式为 KEYVALUE for (int i 0; envp[i] ! NULL; i) { printf(%s\n, envp[i]); } return 0; }
上一篇/下一篇内容由系统自动关联 返回资讯列表 →