目录

基本概念

常见的环境变量

PATH测试

HOME测试

SHELL测试

和环境变量相关的命令

main函数的三个参数

环境变量的组织方式

通过代码如何获取环境变量

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

基本概念

如:我们编写C/C++代码时候,在链接的时候,从来不知道我们的所链接动态静态库在哪里,但是照样可以链接成功,生成可执行程序原因就是有相关环境变量帮助编译器进行查找

常见环境变量

如何查看环境变量

查看环境变量方法
echo $NAME //NAME:你的环境变量名

PATH测试

为什么我们运行自己程序需要指定路径,而使用指令时(如ls等)却不需要

 PATH指定命令搜索路径

        环境变量PATH内包含了数条路径(以进行分割),当我们运行程序时,如果我们没有指明路径系统自动从左往右在PATH里的路径下寻找,找到了该程序就能直接运行了。

如何自己的程序能直接运行?支持c++程序,只支持c程序

这里提供两种方法

sudo cp hello /usr/bin

        我们hello程序拷贝到了PATH环境变量中的一条路径下。当我们直接运行该程序时,系统就能找到该程序了。

export PATH=$PATH:当前路径

 直接运行成功:

注意点:

  1. export设置一个新的环境变量,我们这里相当于覆盖原有的PATH,因此设置时要带上PATH本来就有的路径(即$PATH),后面再跟上我们添加的路径,不然会造成很多指令失效,因为PATH中的路径没了,系统找不到指令了。

  2. 发生上面的问题时,我们重启我们的Xshell即可,因为在我们的家目录中有环境变量的配置文件,每次启动时都会自动对应的环境变量导入bash上下文中。

  3. 对单一用户生效的永久性变量(用户级),在用户主目录”~”下的隐藏文件 “.bash_profile”中添加自己想要的环境变量。

  4. 临时有效的环境变量(只对当前shell有效),直接使用export指令添加

HOME测试

用户的主工作目录(即用户登陆到Linux系统中时,默认的目录):

cd ~命令 //返回家目录(与HOME中记录的家目录相同

SHELL测试

        我们在Linux操作系统当中所敲的各种命令,实际上需要由命令行解释器进行解释,而在Linux当中有许多种命令解释器例如bash等),我们可以通过查看环境变量SHELL来知道自己当前所用的命令解释器的种类。

和环境变量相关命令

常用的几个环境变量整理

PATH 指定命令搜索路径
HOME 指定用户的主工作目录
HISTSIZE 保存历史命令记录条数
LOGNAME 当前用户的登录
HOSTNAME 主机名称
SHELL 用户当前用的哪种shell
MAIL 指当前用户的邮件存放目录
PS1 命令提示符,root用户是#,普通用户是$
PS2 附属提示符,默认是“>”
SECONDS 从当前shell开始运行所过去的秒数

本地定义shell变量,env无法显示.

本地定义shell变量:

环境变量:

main函数的三个参数

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

 main函数的前两个参数

  1 #include<stdio.h>
  2 int main(int argc,char* argv[])
  3 {
  4   for(int i=0;i<argc;++i)
  5   {
  6     printf("argv[%d]=%sn",i,argv[i]);                                          
  7   }
  8   return 0;
  9 }

 通过上面,我们可以很清楚的看到argv[0]中是我们要运行的程序,后面则是跟上了我们添加选项

main函数第三参数

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

打印出的是我们的环境变量。

环境变量的组织方式

        每个程序都会收到一张环境表,环境表是一个字符指针数组每个指针指向一个以’’结尾的环境字符串

通过代码如何获取环境变量

上面已演示,不多赘述。

        libc定义全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明

#include <stdio.h>
int main()
{
    extern char** environ;
 	for(int i = 0;; environ[i]; i++)
    {
 		printf("%sn", environ[i]);
 	}
    return 0;
}

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

 使用getenv函数获取环境变量PATH的值:

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

 

原文地址:https://blog.csdn.net/m0_67530233/article/details/130094892

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33046.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注