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

藤虎广州网站建设检测设备技术支持东莞网站建设

藤虎广州网站建设,检测设备技术支持东莞网站建设,wordpress js 统计代码,网站开发和推广财务预算前言:各位老铁们好,好久没分享知识了,今天我要和各位老铁分享的是环境变量 ,对于Linux操作系统的学习者,我们会经常使用到环境变量,那么什么是环境变量呢?在讲环境变量之前,先问各位老铁一个问题…

前言:各位老铁们好,好久没分享知识了,今天我要和各位老铁分享的是环境变量 ,对于Linux操作系统的学习者,我们会经常使用到环境变量,那么什么是环境变量呢?在讲环境变量之前,先问各位老铁一个问题,为什么我们编译好我们写的程序,然后在执行二进制可执行文件时,需要链接动静态库时。我们都不知道动静态库在哪,但是我们./目标文件名时就会自动链接动静态库了呢?当我们运行我们的程序时,操作系统会自动去相应的路径下去查找动静态库,那明明我们在代码中根本没有写任何的关于路径的代码,那么OS为什么能够找到动静态库呢?我们在安装对于的库时,OS会把安装路径写在配置文件中,再通过环境变量去对应的配置文件去查找到对应的动静态库的路径。

1.环境变量的定义:

环境变量简单来说就是一个工作指南,只有当你拿到这个工作指南时,你才可以知道你在哪里找到工作的文件,工作的流程和需要使用那些工具来进行工作。环境变量相当于一个全局变量

2.常见的环境变量:

我们先来见见系统中所有的环境变量:

[ljy@localhost ~]$ env

在这里插入图片描述
我们可以看到在系统中有很多的环境变量,那么那些是我们常用的呢?

(1)PATH:指令的默认搜索路径

我们在Linux中执行二进制文件时,需要./目标文件名,为什么需要指明在当前路径下呢?为什么输入echo指令时不需要指明路径在哪呢?
原因是OS会把一些指令的搜素路径放到/usr/bin目录下,当你输入指令时,OS会去/usr/bin目录下查找对应的路径,而环境变量PATH就是指向指令默认的搜素路径的。
我们来看看是不是
在这里插入图片描述
现在我们写个程序来验证一下PATH的功能吧

#include <iostream>
using namespace std;int main()
{cout<<"hello Linux"<<endl;return 0;
}

在这里插入图片描述

现在我在dd目录下写了一个test.cpp文件,我现在不想像以前一样带路径才能执行该文件,我想像系统指令一样,输入指令就能执行该文件了。
我们只需要使用PATH环境变量就可以实现了,需要把我们写的程序的路径放到PATH环境变量中,系统就会自动去PATH环境变量中查找我们代码的路径。
我们来验证一下吧

//export用于设置一个新的环境变量
[ljy@localhost dd]$ export PATH=$PATH:/home/ljy/dd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么test1就成功添加到指令的默认路径中了。

(2)HOME:linux登陆时,指定的用户的工作目录

我们来验证一下看看
在这里插入图片描述
在这里插入图片描述

(3)SHELL:表示当前的shell

在这里插入图片描述

(4)USER:表示当前使用的linux的用户

在这里插入图片描述

(5)PWD:表示当前的路径

我们使用ls指令查看文件时,是如何知道该文件在那个路径下,有的老铁可能会说,这还用说吗,不就是在当前路径下吗?那操作系统又是怎么知道在当前路径下的呢?
OS是借助PWD环境变量来知道当前是处于那个路径下,再在该路径下使用ls进行列出文件,使用ls指令时,该进程会创建出子进程,子进程会继承父进程的环境变量(环境变量是全局的),再通过环境变量PWD去查找当前所在的路径,最后列出当前路径下的文件
在这里插入图片描述

3.查看环境变量的方法

(1)

echo $环境变量名

在这里插入图片描述

(2)查看系统中所有的环境变量

env

在这里插入图片描述

(3)将本地变量变为环境变量

export 变量名

注意:本地变量只在当前shell会话中有效,而环境变量在任何shell都有效
在这里插入图片描述

(4)显示本地变量和环境变量

set

在这里插入图片描述

(5)取消变量

unset

在这里插入图片描述

4.命令行参数

不知道各位老铁有没有看到过带参数的main函数

int main(int argc,char* agrv[])
{return 0;
}

应该绝大多数老铁都看到过main这种写法,不知道各位老铁会不会好奇,char* agrv[]里面存放着什么,char* agrv[]是一个字符指针数组,我们来看看里面存放着什么吧

#include <stdio.h>int main(int argc,char* argv[])
{int i;for(i=0;i<argc;i++){printf("argv[%d]->%s\n",i,argv[i]);}return 0;
}

我们来运行一下上面的代码
在这里插入图片描述
在这里插入图片描述

通过上面的代码输出结果和图示,我们可以很清楚argv数组中存储的是什么了,在argv数组中,argv[0]存储的是程序的路径和名称,后面存储的是该程序所带的参数,那么是谁传命令行参数给main函数的呢?当前是父进程传的命令行参数给main函数的啦

在上面我们看到了main函数中传两个参数的情况,但是main函数最多是可以传三个参数的,那main函数中的第三个参数是什么呢?
下面我写段代码给大家解释一下

#include <stdio.h>int main(int argc,char* argv[],char* env[])
{return 0;
}

相信各位老铁会非常好奇env数组中存放的是什么,在这里就不卖关子了,其实env数组中存放的是环境变量
在这里插入图片描述
到这里有老铁可能就会反驳说,凭啥你说是存放环境变量啊,我认为不是环境变量啊,而是存放其他的啊,那么就由我来为大家验证一下吧。
这里我就写个make文件直接进行编译了(比较懒hhh)
在这里插入图片描述

#include <stdio.h>int main(int argc,char* argv[],char* env[])
{//注意:env数组在main函数中是没有传入个数的,//      但是env数组也是以NULL结尾的,NULL又可以看成0for(int i=0;env[i];i++){printf("env[%d]: %s",i,env[i]);}return 0;
}

我们来编译运行一下代码看看结果
在这里插入图片描述
通过上面我们可以证明系统会加与父进程相关的所有环境变量到main函数中的env数组中,子进程会继承来自于父进程的环境变量

5.获取环境变量

1.在上面我们知道了一种获取环境变量的方法,就是通过main函数参数进行获取环境变量,但现在,我不想通过main函数参数来获取环境变量了,那么还有其他的方法吗?那必须有啊!

2.getenv(推荐使用)

我们来看看getenv函数的文档
在这里插入图片描述
在这里插入图片描述
getenv是用于获取环境变量的,当getenv获取成功是返回指向环境变量的指针,获取失败返回NULL

话不多说,直接展示

#include <stdio.h>
#include <stdlib.h>
int main()
{printf("%s\n",getenv("PATH"));return 0;
}

在这里插入图片描述

2.environ(C语言提供的)

老规矩,先看看该函数的文档
在这里插入图片描述
在这里插入图片描述
直接演示environ的使用方法

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{//注意:environ是一个二级指针//environ[1]表示指向env数组的第一个元素,再进行解引用for(int i=0;environ[i];i++){printf("environ[%d]:%s\n",i,environ[i]);}return 0;
}

在这里插入图片描述
报错没声明,那么我们直接加个类型声明呗

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{extern char** environ;//注意:environ是一个二级指针//environ[1]表示指向env数组的第一个元素,再进行解引用for(int i=0;environ[i];i++){printf("environ[%d]:%s\n",i,environ[i]);}return 0;
}

在这里插入图片描述

总结:

以上内容分享了关于Linux中的环境变量的定义,常用的环境变量,查看环境变量的方法,获取环境变量的方式。希望各位老铁看完能有所收获。

http://www.dtcms.com/a/404979.html

相关文章:

  • 服饰的网站建设品牌营销策略案例
  • 免费 成品模板网站怎么提高网站建设水平
  • 你做我评网站会自动查论文相似度吗沈阳专业网站建设企业
  • windows搭建网站开发大连旅游网站建设大概多钱
  • 阿里巴巴国际站运营模式凡科代理建站登录
  • 赣州网站建设信息百度app下载官方免费下载最新版
  • 如何一个空间做多个网站上海关键词优化报价
  • 花都商城网站建设怎么将自己房子投入网站做民宿
  • 凡科网站内容怎么做效果好龙岗个性化网站建设价格低
  • 公司设计网站推荐温州网站设计制作课程
  • 建设网站用动态ip还是静态ip盐城网站建设流程
  • 辽宁建设厅网站什么时候换的贵州icp网站备案中心
  • h5网站开发是什么意思西地那非片的功效与作用
  • 免费网站建设招商深圳建筑行业招聘网
  • 龙岩做网站新乡做网站推广
  • 移动端的网站建设网贷审核网站怎么做
  • 可以打开的wap网站Wordpress怎么連結mysql
  • 扶风网站开发外贸网站都有那些
  • win8导航网站模板广州公司注册流程及费用
  • 施工企业负责人seo关键词排名优化怎样收费
  • 西宁网络公司做网站哪家好计算机多媒体毕业设计网站建设
  • 网站标签图标代码静态网站开发网站
  • 如何建个人网站教程网站优化比较好用的软件
  • 微网站建设资讯出入库管理系统软件
  • 网站运营部的职责微商城怎么弄
  • 外贸网站建设要注意什么网络公司运营是干啥的
  • 做网站都可以做什么网站建设与设计教程视频
  • 网站出问题制作网页的要素
  • 佛山专业外贸网站建设合肥关键词优化平台
  • 网站如何申请化妆品备案查询网站