当前位置: 首页 > news >正文

[随笔杂谈] 计算机编程 —— 环境变量究竟是个什么东西?我该如何配置它?

当我们学习某种编程语言的时候,在配置初始环境时,总是会听到。配置环境变量,配置 PATH 环境变量 。。。 对于小白而言:啥是环境变量?环境变量有啥用?为什么要配它才能用?就成了一大难点,那么本文就是来进行 “编程扫盲” 的(笔者也是教太多小白配,有点烦了,决定写这篇文章,让小白自己来看) !!

0x01:环境变量 · 导入篇 — CMD 窗口

在看人家校验编程环境(或者有人想装逼)时,下面这个窗口你一定不会陌生:

上面那个窗口,我们管他叫 “命令行” 窗口,这个窗口其实来自早期的 Windows Dos 系统。早期还没有现在的图形化界面(就是你鼠标点点的那个界面),所有操作都是通过这个黑框框进行的。

OK,上面不是我们关注的重点,笔者教你咋打开它。同时按住你键盘上的 Win + R 键,你不知道啥是 Win 键?看下面这个图(Win + R 键):

此时你的桌面左下角会弹出一个叫 “运行” 的框框,通过它我们可以快速打开一些东西,这个也不重要。我们输入 cmd,就会打开上面我们介绍的那个黑框框:

恭喜你,你已经知道怎么进入 CMD 命令行界面了(你以后会经常和其打交道的)。在这个界面我们能使用一堆系统命令,可以通过 help 方式打印可以用的命令(我知道你看不懂,我们也不会教,就是告诉你一下):

0x02:环境变量 · 核心篇 — PATH 环境变量的作用

与其叫环境变量,不如叫命令索引目录。就是上面那个黑框框,我输入 ipconfig 它可以给我显示我本机的 IP 信息,那么问题来了,它凭啥能显示:

其实这就是因为当我们输入 ipconfig 并按下 Enter 后,系统会去一个表格中找 ipconfig 这个命令对应的程序(一般 Windows 系统里就叫 ipconfig.exe)。

好,那么问题来了?它咋找的?接下来,笔者带你走一下流程。


首先,它会去你当前运行命令的目录下去找,如果找到了 ipconfig.exe 就会运行它:

那么问题来了,当前目录下没有 ipconfig 咋办?此时系统就会去 “PATH 环境变量” 那个表格中去查询,先来看看我这台机器的 PATH 环境变量内容(待会会教你咋打开这个界面的):

来看看表格中的内容:

%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
%SystemRoot%\System32\Wbem
C:\Program Files\Bandizip\

C:\Program Files 这样的路径我们肯定见过,但是像 %SystemRoot% 这种,我们似乎没咋遇到过。其实这种以 % 号包裹一个内容的,我们称之为引用路径。我们尝试通过 CMD 窗口揭开它的神秘面纱,在 CMD 窗口中输入下面的内容:

echo %SystemRoot%\system32

来来来,既然揭开了 %SystemRoot% 的神秘面纱,我们就去那个目录下看看,有没有我们的 ipconfig.exe

怎么样,是不是跟着 PATH 环境变量的那个表,直接就找到了 ipconfig.exe 程序,你可以点击试试(它应该会闪退,同时打印你本机的 IP 信息)。


笔者上面复现的流程就是告诉你,我们配置的 PATH 环境变量,其实就是为了方便系统去找我们写的那些可执行程序的。

0x03:环境变量 · 实操篇 — 环境变量配置基础

上一小节,笔者简单演示了一下 PATH 环境变量的作用,但我猜有同学肯定还是蒙蒙的,毕竟不是自己实操,那么本节笔者就来进行实操演示。

0x0301:实操基础 — 环境变量在哪里配置

找到 “此电脑”,右击选择 “属性”,会打开系统属性界面:

然后点击 “高级系统设置”,此时就会弹出 “系统属性” 框框,右下角就是 “环境变量”,打开我们就可以进行编辑了:

0x0302:入门实操 — 随便创建一个环境环境变量

既然知道了在哪里配置环境变量,那么接下来我们随便新增一个环境变量看看:

新建后一定要点击确认哦,而且要一直确认到底(啥意思,就是弹出来的三个框都要点确认,才算配置完成)。

配置完成后,我们咋用?肯定是用 CMD 窗口(配置完环境变量后必须要重新打开 CMD 窗口,这样我们刚刚配置的环境变量才会被加载,才能够正常使用)用啦,在 CMD 窗口中输入 Blue17 看看:

如上,我们直接输入 Blue17,会显示它不是内部或外部的命令,这个很正常,因为你本机肯定没有 Blue17.exe 这个程序。但是若我们输入 echo %Blue17% 成功输出了我们前面配置的内容 !!

现在,联想一下 PATH 环境变量中的 %SystemRoot%\system32,你是不是知道这个东西是咋来的了呀。

0x0303:进阶实操 — 通过 PATH 环境变量劫持系统命令

在核心篇中我们讲解了 PATH 环境变量的作用,以及系统找命令的流程。我们大胆一点,能不能劫持 ipconfig 这个命令?

包可以的呀,笔者决定用 whoami.exe 替换 ipconfig.exe,先来看劫持前的表现:

老传统,我们先定位 whoami.exe 命令的位置(咋定位?回看我们咋定位 ipconfig.exe 的流程):

然后我们将 whoami.exe 复制出来,笔者放到了自己的桌面上,我本机桌面路径如下:

C:\Users\Hacker\Desktop

来想想如何当我们运行 ipconfig.exe 时,执行 whoami.exe 呢?只要让 whoami.exe 先被当作 ipconfig.exe 找到就行了吧。所以呢,我们得先让 whoami.exe 冒充一下 ipconfig.exe,咋冒充,手动改个名称就好:

继续,那么如何让我们这个假的 ipconfig.exe 先一步比真的 ipconfig 被找到呢?简单,把假的路径在 PATH 环境变量中放到真的前面就可以了:

OK,万事俱备,我们打开 CMD 窗口输入 ipconfig 看看:

试验完美成功。OK 留个小作业,把 ipconfig 还原回去(还原不回去只能怪自己学艺不精咯,哈哈哈哈)。

相关文章:

  • 日本Shopify 3月数据:家居品类销售额激增120%!
  • 用Allan Deviation的方式估计长时间频率偏差
  • 数据结构和算法(六)--栈队列堆
  • LeetCode算法题(Go语言实现)_49
  • 【AIoT】智能硬件GPIO通信详解(二)
  • go 指针接收者和值接收者的区别
  • 【Pandas】pandas DataFrame pop
  • 【C++11】列表初始化、右值引用、完美转发、lambda表达式
  • 【adb】bat批处理+adb 自动亮屏,自动解锁屏幕,启动王者荣耀
  • 【C++11】新的类功能、模板的可变参数、包装器
  • ceph集群的pg卡住不同步处理记录【如objects degraded (0.223%)】、pg为unclean和degraded等状态处理
  • 网络原理 - 初识网络 2
  • ubuntu 24.02部署java web服务
  • 基于 Java 的淘宝 API 调用实践:商品详情页 JSON 数据结构解析与重构
  • SerialTest 在Linux环境上安装与编译文档
  • GIS开发笔记(7)结合osg及osgEarth实现不同高度下的三个圆形区域形成的三维覆盖轮廓区域绘制
  • AI 语音公司 ElevenLabs 进军亚太市场设立东京子公司;EverTutor Live :语音交互 AI 教育平台丨日报
  • 应用系统中的报表开发成本知多少?
  • SCA(软件成分分析)技术理念、市场前景及趋势
  • MySQL数据库权限管理
  • 在电脑新建网站站点/哪里有正规的电商培训班
  • 江苏省交通建设质监网站/独立站seo外链平台
  • 做网站的岗位叫什么问题/产品推广平台
  • 承接网站开发/搜索引擎优化的主要工作有
  • 网站建设中的时尚资讯/免费信息推广平台
  • 深圳广告公司联系方式电话/在线看seo网站