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

墨刀做网站网页临沂百度seo

墨刀做网站网页,临沂百度seo,济南外贸seo,wordpress free template文章目录 命令行参数环境变量环境变量的概念常见环境变量查看环境变量测试PATH修改PATH HOME和环境变量相关的命令环境变量是如何被组织的通过系统调用putenv和getenv获取或设置环境变量环境变量通常是具有全局属性的普通变量与环境变量的区别 命令行参数 main函数有三种形式&…

文章目录

  • 命令行参数
  • 环境变量
    • 环境变量的概念
    • 常见环境变量
    • 查看环境变量
    • 测试PATH
    • 修改PATH
  • HOME
  • 和环境变量相关的命令
  • 环境变量是如何被组织的
  • 通过系统调用putenv和getenv获取或设置环境变量
  • 环境变量通常是具有全局属性的
  • 普通变量与环境变量的区别

命令行参数

main函数有三种形式,其中最完整的形式是

int main(int argc, char* argv[], char* env[])
{}
int main(int argc, char* argc[]){}

·argc(argument count)是一个整数,表示传递给程序的命令行参数的数量。

·argv(argument vector)是一个字符指针数组,其中每个指针指向一个参数字符串。

本质:命令行参数本质是交给我们程序的不同的选型,用来定制不同的程序功能。命令中会携带很多的选项

自定义命令

下面我们自定义一个命令mytest,这个命令允许用户带1个选项,如果这个选项是-a就输出“Hello,I am cdd”,-b选项就输出“cdd is cool”

#include <stdio.h>
#include <string.h>int main(int argc,char* argv[],char* env[]){if(argc == 2 && strcmp("-a",argv[1]) == 0){printf("Hello, I am cdd\n");}else if(argc == 2 && strcmp("-b",argv[1]) == 0){printf("cdd is cool!\n");}else{printf("\r\tYou are supposed to use -a or -b\n");}return 0;
}

在这里插入图片描述
那么这是怎么进行的呢?
结论1:父进程的数据,能被子进程看到并且访问

结论2:命令行中启动的程序,都会变成进程,其实都是bash的子进程

所以也就是父进程bash干的。bash是一个命令行解释器,我们输入的./cdd -b默认是输入给父进程bash/shell的

1.程序启动时:当您在命令行中输入程序名称并按回车时,命令行解释器(如 shell)会启动程序,并将命令行参数传递给程序。
2.操作系统:操作系统负责创建进程,并将命令行参数准备好。当程序开始执行时,操作系统将参数传递给程序的 main 函数。

环境变量

环境变量的概念

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
每个用户的家目录也是环境变量。
还有我们执行可执行程序时需要在前面加上路径,而指令却不用。按理来说,大部分指令也都是程序,执行后也会创建新的进程,那为什么我们使用类似ls这样的指令不需要在前面加上路径呢?这也是因为这些命令使用了环境变量中的PATH,是系统默认的命令路径,所以不需要用户指定路径(指定也可以)。

常见环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。

查看环境变量

使用printenv或者env指令查看当前系统所有的环境变量
在这里插入图片描述
使用echo $name 指令查看变量为name的值
在这里插入图片描述

测试PATH

指令可以直接执行是因为这些指令环境变量PATH里面已经包含了指令的路径,执行指令之前会在PATH里提供的路径里面去寻找。PATH 变量是一个由冒号分隔的路径列表,每个路径都指向包含可执行文件的目录。
如果我们自己创建的二进制可执行文件是否也可以不需要指定路径直接执行呢?

#include<stdio.h>int main()
{printf("hello Linux\n");return 0;
}

在这里插入图片描述
我们想执行程序只能在可执行文件之前添加路径,不加路径就会报错。

修改PATH

方法一:
将我们的程序所在路径加入环境变量PATH中,使用指令

export PATH=$PATH:test1程序所在路径

命令export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登录操作
在这里插入图片描述
这样我们就可以执行我们的程序了:
在这里插入图片描述

值得注意的是 由于export的作用效力在下一次登录就失效了,是临时的。
这是因为每次登录我们的PATH都会在文件 /.bash_profile里去加载。只有修改/.bash_profile里面的PATH才会永久生效。
使用指令 sudo vim ~/.bash_profile编辑bash_profile文件
在这里插入图片描述
现在我们在bash_profile文件的PATH值后面添加我们的mytest的路径

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/glp/test_10_18/

重新登录刷新PATH,之后就可以随时运行程序mytest了。
这样运行就不用加上路径了。

方法二:
将我们的程序拷贝到PATH里的路径就可以了,比如将mytest拷贝到/usr/bin目录下,该目录存放的都是可以直接运行的指令。

HOME

记录当前用户的家目录
这也是为什么cd ~指令可以直接回到当前用户的家目录。
root用户的HOME
在这里插入图片描述

普通用户的HOME
在这里插入图片描述

和环境变量相关的命令

1.env: 显示所有环境变量。
2.printenv: 打印指定的环境变量。
3 export: 设置或显示环境变量。
4.unset: 删除环境变量。
5.echo: 输出环境变量的值。
6.set:显示本地定义的shell变量和环境变量

环境变量是如何被组织的

每一个环境变量其本质就是一个以:区分键值对的字符串。:左边的是变量名字,右边是变量的值。
所有的环境变量都存放在一张表里面,这张表的每一个元素都是一个指针,指向一个表示环境变量的字符串。
当我们运行一个程序,就会收到一张来自父进程的环境表environ,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。
在这里插入图片描述

通过系统调用putenv和getenv获取或设置环境变量

在程序中,我们可以使用getenv(name)取得参数 name 环境变量的内容.
比如我们getenv(PATH)就可以得到环境变量PATH的值

在man手册中的getenv()函数介绍
在这里插入图片描述
我们可以用putenv(char *string)用来改变或增加环境变量的内容。
参数string 的格式为name=value, 如果该环境变量原先存在, 则该变量值置为value, 否则此参数内容会成为新的环境变量的键值对。
在这里插入图片描述

环境变量通常是具有全局属性的

环境变量一般具有全局性,可以被子进程继承下去
首先导入一个环境变量。

export MYENV=“hello world”

在程序种使用getenv(“MYENY”)获取

#include<stdio.h>
#include<stdlib.h>int main()
{char* p=getenv("MYENV");if(p){printf("%s\n",p);}return 0;
}

bash进程时test2进程的父进程,在bash进程中修改了环境变量,其子进程mytest也会收到一份几乎一模一样的环境变量表,也就能找到我们刚才的变量MYENV了。

那么为什么子进程会继承父进程的环境变量表呢?
原因是子进程会拷贝父进程的几乎所有数据,其中就包含环境变量表。
在这里插入图片描述

普通变量与环境变量的区别

当我们不用export而是直接设置变量
在这里插入图片描述

这样设置的变量称为普通变量。
我们依旧可以使用echo $的方式输出变量的值。
通过env指令观察环境变量表我们发现key不在里面。说明普通变量不是环境变量。
那么普通变量跟环境变量有什么区别呢?
普通变量只会影响当前进程,并不会被子进程继承。

http://www.yayakq.cn/news/591371/

相关文章:

  • asp单页网站源码推广普通话调查问卷
  • 网站被k怎么办动易网站地图
  • 网站营销怎么做怎么做跳转网站首页
  • 老的网站为什么要改版新网站佛山网络公司策划
  • 网站页面效果图怎么做如何购买一个网站的域名
  • 中国建设银行网站太慢了wp网站做404
  • 帝国cms个人网站模板可以做外链视频的网站
  • 南京企业网站设计建设wordpress 相册浏览器
  • 网站服务器的工作原理珠海做网站最好的公司
  • 锚文本外链查询网站百度地图的精准定位功能
  • 做棋牌网站违法嘛拓普网站建设
  • 手机百度关键词排名 seo网站优化软件seo整站优化价格
  • vs2008网站消息弹窗怎么做网站开发课程百度云
  • 做普通网站公司一站式服务宣传语
  • 做美图 网站有哪些装修网站模板源码
  • 谷德设计网站网站信息可以
  • 功能型网站开发网站建设建设公司有哪些
  • 网站怎么做404企业建设网站的过程和预算表
  • 企业网站建设推广赣州58同城网
  • 南昌寻南昌网站设计学校网站建设新闻
  • 无锡高端网站开发潮州网络推广公司
  • 哪个网站做签约设计师比较好想学手艺在哪里可以培训
  • 做网站怎么做推广汉中市建设工程项目审批管理系统
  • 6生肖竞猜网站建设网站cms模板
  • 长沙网站建设 芙蓉区免费空间自带域名
  • 广州住房保障城市建设局网站动漫版
  • 网站建设绩效考评毕业设计网站最容易做什莫类型
  • 深圳企业建站高性价比的选择大连建设工程设计院有限公司网站
  • 安丘市建设局官方网站做网站设计工作的报告
  • 廊坊做网站电话建设厅网站打不开