环境变量(查看的方法--echo,set,env,getenv(),main函数参数,environ),设置环境变量(export,命令行变量/全局变量),删除环境变量(unset,env)

目录

环境变量

引入

查看环境变量

echo + $ + 环境变量名

env

set

getenv() 

char* env[ ]

main函数的参数

应用

使用

char** environ

内容

环境变量是什么 

示例

常见的环境变量

设置环境变量

export指令

如果不加export会怎么样呢?

环境变量分类

如果想要在会话之间保留环境变量的更改

删除环境变量

unset +环境变量名

修改shell配置文件

env


环境变量

引入

  • 还记得 指令 和 我们自己所写的可执行文件 本质是一样的吗?
  • 那么为什么执行指令 直接输入 就好了,而我们的需要 输入路径 才能运行,明明大家都是在某个目录下存放的文件耶
  • 这就和环境变量有关系辣

  • 我们的命令必须得被找到,才能执行
  • 而我们如果不带路径,是找不到我们自己的可执行文件的
  • 系统的命令默认是可被找到的
  • 是因为将系统命令所在路径都配置在了PATH这一环境变量中(加$ ,可以使其被认为时shell变量)

  •  这一串,以 : 作分隔符
  • 以这些路径作为搜索路径,这样系统命令就可以被搜索到

查看环境变量

echo + $ + 环境变量名

env

显示系统中的环境变量 

set

显示本地定义的shell变量和环境变量

getenv() 

是一个函数,头文件<stdlib.h>

参数可带可不带

  • 不带就显示全部的环境变量
  • 参数以字符串的形式传入,带上可以打印该环境变量的内容
  • eg:getenv("PATH")

char* env[ ]

main函数的参数

首先,我们需要知道,main函数其实是有三个参数的

应用
  • 完成对 一条指令,不同选项 实现不同的子功能 (bash底层就是使用命令行参数实现的)
使用

char** environ

是一个外部第三方参数,声明即可使用

内容

因为其以null结束,所以可以用于判断是否结束

环境变量是什么 

环境变量一般是指在操作系统中,用来指定操作系统运行环境的一些参数

示例

  • 我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里
  • 但是照样可以链接成功,生成可执行程序
  • 原因就是有相关环境变量帮助编译器进行查找
  • 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

常见的环境变量

设置环境变量

export指令

  • 子进程的环境变量都是从父进程来的
  • 默认,所有的环境变量,都会被子进程继承
  • 就是因为它有全局属性,所以才会被子进程继承
  • 使用export设置后,不需要再次编译程序,即可打印更新后的值
如果不加export会怎么样呢?

我们会发现,env是找不到我们的bit的,而set和echo可以

环境变量分类

因此我们其实在命令行上,可以定义两种类型的变量

  • 像bit这种的命令行变量(独有的,不是全局的)
  • 像getenv这样的全局变量

虽然是全局变量,但这些环境变量只在当前会话中有效,并且在会话结束后不会保留

当会话结束时,进程及其相关的环境都会被终止,因此设置的环境变量也会被清除

如果想要在会话之间保留环境变量的更改

  • 可以将其添加到适当的启动脚本中(eg:.bashrc / .profile)
  • 这样每次启动新的交互式会话时,这些环境变量都会被加载并保持有效

删除环境变量

unset +环境变量名

就不做展示了

修改shell配置文件

Shell的配置文件 -- 如~/.bashrc,  ~/.bash_profile,   ~/.zshrc

  • 打开适当的配置文件,找到设置了环境变量的行,然后将其删除或注释掉(在行首添加#符号)
  • 保存文件后,新的设置将在下次登录时生效

env

本身并不能直接删除环境变量,但可以通过使用该命令来重新设置环境变量为空值,从而实现“删除”的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值