Linux(环境变量)

news/2024/12/22 10:51:02/

Linux(环境变量)

  • 常见环境变量
  • 查看环境变量方法
  • 和环境变量相关的指令
  • 环境变量的组织方式
    • 通过代码如何获取环境变量

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

常见环境变量

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

查看环境变量方法

  echo $NAME //NAME:你的环境变量名称

比如查看PATH
在这里插入图片描述

我们平常使用过程中可以发现,在Linux中运行我们自己生成的可执行程序是需要加./的,但是像ls这些指令,直接输入就可以,那么这是为什么呢?

因为系统就是通过环境变量PATH来找到ls命令的,可以看到环境变量PATH当中有多条路径,这些路径由冒号隔开,当你使用ls命令时,系统就会查看环境变量PATH,然后默认从左到右依次在各个路径当中进行查找。而ls命令实际就位于PATH当中的某一个路径下,所以就算ls命令不带路径执行,系统也是能够找到的。而我们的mytest并不在此路径下。
在这里插入图片描述
但是我们也可以让我们自己的可执行程序也不用带路径就可以执行:
在这里插入图片描述

环境变量HOME当中即保存的该用户的主工作目录:
在这里插入图片描述

测试SHELL:
Linux操作系统当中所敲的各种命令,实际上需要由命令行解释器进行解释,而在Linux当中有许多种命令行解释器(例如bash、sh),我们可以通过查看环境变量SHELL来知道自己当前所用的命令行解释器的种类。而该命令行解释器实际上是系统当中的一条命令,当这个命令运行起来变成进程后就可以为我们进行命令行解释。
在这里插入图片描述

和环境变量相关的指令

  • echo: 显示某个环境变量值
  • export: 设置一个新的环境变量
  • env: 显示所有环境变量
  • unset: 清除环境变量
  • set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

在这里插入图片描述

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

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

1.命令行的三个参数
main函数其实有三个参数,只是我们平时基本不用它们,所以一般情况下都没有写出来。

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

main函数的第三个参数接收的实际上就是环境变量表,我们可以通过main函数的第三个参数来获取系统的环境变量。
在这里插入图片描述
在这里插入图片描述

2.通过第三方变量environ获取

在这里插入图片描述
在这里插入图片描述

现在我们来说说main函数的前两个参数,main函数的第二个参数是一个字符指针数组,数组当中的第一个字符指针存储的是可执行程序的位置,其余字符指针存储的是所给的若干选项,最后一个字符指针为空,而main函数的第一个参数代表的就是字符指针数组当中的有效元素个数。

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1010390.html

相关文章

优盘安装Win 10英文版的一点经验

由于一些特殊的原因,需要在一个笔记本上安装Win 10英文版,没想到还挺麻烦的,简单记录两句。首先,可以在这里:Download Windows 10 用微软提供的工具“Create Windows 10 installation media”,下载英文版i…

解决layui框架的radio属性不显示失效问题

废话不多说 直接开干&#xff01; 1.问题描述使用layui时 2.不显示问题 纠结半天 忘记插件要刷新 步骤 3、解决方法就是&#xff1a;使用form.render() 刷新请求的界面 <script type"text/javascript">//刷新界面 所有元素layui.use(form,function(){var form …

DataGrip 配置 HiveServer2 远程连接访问

文章目录 集群配置 HiveServer2 服务DataGrip 配置 HiveServer2 访问 Hive 集群配置 HiveServer2 服务 1.在 Hive 的配置文件 hive-site.xml 中添加如下参数&#xff1a; <!-- 指定 HiveServer2 运行端口&#xff0c;默认为&#xff1a;10000 --><property><na…

Qt小项目贪吃蛇实线,主要掌握定时器、信号与槽、按键事件、绘制事件、坐标运算、随机数生成等

Qt小项目贪吃蛇实线&#xff0c;主要掌握定时器、信号与槽、按键事件、绘制事件、坐标运算、随机数生成等 Qt 贪吃蛇演示QWidget 绘制界面项目源文件 注释清晰widget.hwidget.cpp 拓展QTimerQKeyEventQRectFQPointFQPainterQIcon Qt 贪吃蛇演示 QWidget 绘制界面 项目源文件 注…

centos 7 部署两个 mysql 8.0.31(非常详细)

本文在一台 centos 7 机器上同时部署了两个 mysql 实例&#xff0c;其端口号分别为&#xff1a;3306、3307&#xff01; 废话不多说&#xff0c;开干&#xff01;&#xff01;&#xff01; 一、前期准备工作 1、mysql-boost-8.0.31.tar.gz 源码下载 下载地址&#xff1a;htt…

动态路由协议 ospf

动态路由协议的分类 rip : 距离矢量路由协议&#xff08;容易产生环路&#xff09;ospf&#xff1a; 链路状态路由协议&#xff08;比较耗费资源&#xff0c;但是链路准确性好&#xff09;bgp&#xff1a; 外部网关协议 RIP OSPF LSA泛洪 LSDB维护 SPF计算&#xff08;最短路…

VUE框架:vue2转vue3全面细节总结(5)过渡动效

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人_python人工智能视觉&#xff08;opencv&#xff09;从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了&#xff1a; https://blog.csdn.net/lbcy…

gin框架学习

文章目录 配置go环境实现一个简单的web响应服务验证功能gin增加页面以及传递数据 配置go环境 去go官网下载对应的版本 go下载地址 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 我们可以编辑 ~/.bash_profile 或者 /etc/profile&#xff0c;并将以下命令添加该文件的末…