首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux下的环境变量

Linux下的环境变量

作者头像
绝活蛋炒饭
发布2024-12-16 16:22:34
发布2024-12-16 16:22:34
28000
代码可运行
举报
文章被收录于专栏:绝活编程学习绝活编程学习
运行总次数:0
代码可运行

1.引言

1.1bash的部分工作

这一个就是我们命令行的开始,这个是谁输入的呢?这个其实是bash输出的。 bash不仅输出开头,还帮我们接受输入值。

1.2main函数也有参数

我们在命令行中输入字符串,都被bash传递给了main函数, argc存储输入字符串的个数,argv存储输入的所有字符串。

1.3我们可以通过给main函数传入不同的参数,让同一份代码实现不同的功能

./mybin -add 1 2 ,这个就是我们在运行自己的程序,这个是不是和Linux下的指令特别相似。之前提到,Linux下的指令其实上本质就是程序,这点在这里也得到了验证, 但是,这里还有一点区别的是我们自己的程序./ mybin 声明了自己的路径(执行一个程序必须先找到一个程序),而Linux下的指令却不需要声明路径,这是为什么呢? 我们联想到应该是有一个未知的东西帮助指令完成了这个工作。

1.4先认识一个环境变量PATH,帮助Linux找到指令程序的地址

其实上这个PATH路径就是一个默认的搜索路径,当你输入一个命令没有输入路径时,Linux就会默认到这个路径下搜索。 PATH不是一个单一路径,这是一个以冒号( :)作为分隔符的很多路径的集合。

我们如果将自己的程序添加到,PATH内的某一路径下时,也可以在执行时不需要添加路径。 (这里不建议这么干,因为你写的软件毕竟只是一个半成品,贸然加进去可能会污染命令池)。

我们同样也可以把我们的可执行程序所处的路径加入到PATH变量当中去。

PATH = 路径:$PATH(这里对PATH是覆盖式写入的,需要加上:PATH来保留之前的值)

2.环境变量

2.1环境变量的概念

环境变量,一般是系统内置的的具有特殊作用的变量(本质就是系统开辟空间,给他名字和内容)。 环境变量不是一个,而是一堆,彼此之间没有特殊联系。

2.2见见其他的环境变量

如PWD就是记录着你的当前路径,当你使用pwd命令时,OS才能给你返回值。 。。。

env 查看所以的环境变量

就是当你访问操作系统的时候,操作系统根本不知道你是谁。 是操作系统,在当你登录的时候,把你需要的周边信息都暂时维护起来了。当操作系统需要识别你是谁时,或者你的主机号等等你的信息时,就能够直接通过环境变量去找。 就是每次当你登录的时候,操作系统都会开辟一段空间,把你用户的信息维护起来。

2.3自己设置环境变量

export name=val


2.4程序自己获取环境变量

2.4.1通过参数env获取环境变量

其实上,main函数还有一个参数,char * env[],这个数组里就存储着环境变量字符串的第一个字符的的地址。

2.4.2环境变量的特性

我们发现,bash进程真的把环境变量以参数的形式传递给了main函数。

我们的程序运行的时候,也会变成一个进程,那么他的环境变量就应该是来着bash,也就是他的父进程。

环境变量的特性:具有全局属性 ,会被所有的子进程和孙子进程给继承。 如果某一进程需要修改,即发生写时拷贝

2.4.2通过getenv()(系统调用接口)获取环境变量
代码语言:javascript
代码运行次数:0
运行
复制
const char *username=getenv("USER");
2.4.3环境变量的一个小应用

利用环境变量设置一个小权限,让代码只有自己能够运行。

2.4.4第三方调用接口获取环境变量
代码语言:javascript
代码运行次数:0
运行
复制
#include <stdio.h>
int main(int argc, char *argv[])
{
 extern char **environ;

 int i = 0;

 for(; environ[i]; i++)
{
 printf("%s\n", environ[i]);
 }

 return 0;
}

2.5环境变量的配置文件

我们发现,当我们在把环境变量在命令行上直接给修改了,我们重启Linux的时候,再次查看环境变量,他就恢复成了原样。

这就说明了,我们的修改数据仅仅停留在了内存上,当虚拟机重启的时候,文件重新加载进入内存的时候一切都恢复了。


2.5环境变量与本地变量

环境变量具有全局属性,会被子进程继承。 本地变量,只会留在本进程

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引言
    • 1.1bash的部分工作
    • 1.2main函数也有参数
    • 1.3我们可以通过给main函数传入不同的参数,让同一份代码实现不同的功能
    • 1.4先认识一个环境变量PATH,帮助Linux找到指令程序的地址
  • 2.环境变量
    • 2.1环境变量的概念
    • 2.2见见其他的环境变量
    • 2.3自己设置环境变量
    • 2.4程序自己获取环境变量
      • 2.4.1通过参数env获取环境变量
      • 2.4.2环境变量的特性
      • 2.4.2通过getenv()(系统调用接口)获取环境变量
      • 2.4.3环境变量的一个小应用
      • 2.4.4第三方调用接口获取环境变量
    • 2.5环境变量的配置文件
    • 2.5环境变量与本地变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档