Linux环境变量

发布于:2025-07-20 ⋅ 阅读:(12) ⋅ 点赞:(0)

命令行参数

argc是参数个数,argv是指针数组(字符串数组)

#include<stdio.h>
int main(int argc,char* argv[])
{
	int i=0;
	for(i;i<argc;i++)
	{

		printf("argv[%d]:%s\n",i,argv[i]);
	}
	return 0;
}

运行: 

 

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

这些命令行参数默认输入给父进程bash的,bash把它们变成main的参数,命令行启动的程序都会变成进程,都是bash的子进程,bash内部会自动生成argv表。

环境变量

像我们的指令,不需要带路径 ,但是自己写的要带路径,这是因为系统存在一些全局的设置,会告诉命令行解释器,应该去哪些路径下寻找可执行程序。

系统中很多配置,在我们登录的时候已经加载到bash进程(内存)中了。

查看

echo $PATH

PATH:环境变量,打印环境变量内容,$PATH

bash执行命令的默认搜索路径.

查看所有环境变量:

env

配置

想要把自己写的程序按照指令执行,可以把程序拷贝到默认搜索路径文件夹里面,不要的时候删掉,但是一般不建议随便增加删除。

第二种方式增加搜索地址,当然,不小心误删了可以直接重新登录,因为是在内存中修改的,磁盘中的没变。

PATH=$PATH:yourpath

但是这是内存级别的,不能永久保存。

第三种方式在~/.bashrc中配置当前用户环境变量,在文件中写入下面语句:

export PATH=$PATH:yourpath

执行:

source .bashrc

重新登录即可看到配置好的

第四种方式在/etc/profile中配置全局环境变量,方法和第三中一样,只不过影响范围不同。

增加环境变量

export name=val

没有export叫本地变量,export和echo是内建命令,有些命令由bash执行,80%命令由bash创建子进程执行。

本地变量只在bash内部有效,无法被子进程继承,可以export name变成环境变量。

取消环境变量

unset name

通过代码查看环境变量

环境变量是可以被子进程拿到,我们的程序一般都是bash的子进程,环境变量是全局的,bash内部有一张env表,是一个指针数组(字符串数组),以NULL结尾。

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

}

或者

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

}

 

当然也可以通过函数获得指定的环境变量:

#include <stdlib.h>
       char *getenv(const char *name);
       char *secure_getenv(const char *name);


网站公告

今日签到

点亮在社区的每一天
去签到