news 2026/6/15 18:04:53

Linux环境变量个人笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux环境变量个人笔记

基本概念

环境变量(environment variables)是用来指定操作系统运行环境的一些参数。我们在编写C/C++代码的时候,在链接时虽然不知道链接的动态静态库在哪里,但照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。 环境变量在系统中具有全局特性

常见环境变量

PATH: 指定命令的搜索路径。我们平时直接输入pwd,而不需要带上这个命令的地址,是因为pwd指令的地址已经被存储到PATH当中,系统会自动遍历PATH中的地址寻找pwd。

HOME: 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

SHELL: 当前Shell,它的值通常是/bin/bash


使用”echo $环境变量名“打印环境变量的信息


分别使用两个不同的用户对HOME进行测试


环境变量有关指令

echo: 显示某个环境变量值

export:设置一个新的环境变量

env: 显示所有环境变量

unset: 清除环境变量 HOME 的关系

set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。这张环境表是通过命令行解析得到的。

命令行解析:

命令其实是由程序实现的,是程序就会有main函数,而main函数其实是可以有参数的。对于操作系统而言,我们输入的命令就是字符串,命令行会被Shell拆散成一个个字符串,再把这些字符串传给main函数,这就是命令行解析

命令行解析具体工作流程

在终端输入./test并回车时,Shell 做了以下几件事:

  • 读取输入:Shell 读取你输入的字符串./test
  • 解析命令行:Shell 通过空格分割字符串,得到参数列表。
    • argc = 1(只有一个参数./test)。
    • argv[0] = "./test"
  • 查找可执行文件
    • 因为命令以./开头,Shell 直接定位到当前目录下的test文件,跳过 PATH 搜索
    • 创建子进程并执行
      • Shell 调用fork()创建子进程。
      • 子进程调用execve("./test", argv, env)
      • execve是系统调用,它会:
        • 加载./test程序到内存。
        • 将 Shell 的环境变量(env)复制一份给新程序。
        • 跳转到test程序的main函数入口

这里补充一下main函数的参数形式:无参数带命令行参数,此外还有带环境变量参数

继续上面的例子,假如我们输入的是./test时,argc是1,因为接收到一个命令,然后argv[0]存放的就是指向./test地址字符串的指针。

获取环境变量的方式

下面代码演示获取环境变量的方式:


用字符指针数组打印所有环境变量


用Printenv来查看所有环境变量


使用getenv()函数在程序中获取环境变量并打印


环境变量的全局性

环境变量通常具有全局属性,可以被子进程继承下去

下面代码示例在未向shell中添加自定义环境变量时,子进程提示无法找到MYENV,向shell中添加自定义环境变量后,子进程能够找到该环境变量,从而证明了环境变量的全局属性

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 12:20:19

LinkSwift:本地化网盘直链解析工具的完整指南

LinkSwift:本地化网盘直链解析工具的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…

作者头像 李华
网站建设 2026/6/11 16:16:44

更改远程桌面(RDP)端口号

更改远程桌面(RDP)端口号,核心是改注册表、放行防火墙、重启服务三步,缺一不可。一、修改注册表(核心) 按 WinR 输入 regedit 打开注册表编辑器。 定位到两个路径,均将 PortNumber 改为十进制新…

作者头像 李华
网站建设 2026/6/9 12:18:05

Open UI5 源代码解析之1431:AppVariantOverviewDialog.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.rta\src\sap\ui\rta\appVariant\AppVariantOverviewDialog.js AppVariantOverviewDialog.js 文件深度分析 文件定位与整体价值 这个文件位于 sap.ui.rta 模块下的 appVariant 目录,名称为 AppVarian…

作者头像 李华
网站建设 2026/6/11 13:23:04

Unity 2018-2019下ShaderForge可视化着色器继续可用的修复方案

本文还有配套的精品资源,点击获取 简介:Unity升级到2018.x或2019.x后,原ShaderForge插件常出现ShaderGenerator报错、节点连接失效、材质预览黑屏、编辑器界面异常等问题。这个补丁包专门解决这些兼容性障碍,基于官方ShaderFor…

作者头像 李华