Linux:环境变量的特性及获取

这篇具有很好参考价值的文章主要介绍了Linux:环境变量的特性及获取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、环境变量基本概念

1.1命令行参数

1.2常见环境变量

二、环境变量相关指令

创建本地变量

三、环境变量通常是具有全局属性的


一、环境变量基本概念

环境变量(environment variables)不是一个而是一堆,彼此之间其实没有关系。本质上是为了解决不同场景下会出现的不同问题。

环境变量,一般是系统内置的具有特殊用途的变量。系统的环境变量本质就是系统自己开辟空间,给它名字和内容即可。

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

1.1命令行参数

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

Linux:环境变量的特性及获取,Linux,linux,运维,服务器
Linux:环境变量的特性及获取,Linux,linux,运维,服务器
众所周知main函数是可以带参的,即命令行参数,第一个元素argc表示argv中有几个元素,当我们在bash中命令行输入命令时,我们所输入的以空格为分隔符的字符串就会被bash解析成一个个小字串维护成指针数组存入argv(命令行参数表 )然后传给main函数。
而命令行参数存在的意义就是为了根据命令行所输入的字符串来让一个程序(指令)来根据参数的不同实现内部不同的功能。
命令行参数,是linux指令选项的基础。

1.2常见环境变量

那为什么使用系统的指令时可以直接调用,而自己写的.exe为什么需要加./才能运行呢?

PATH : 指定命令的搜索路径。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器
因为在系统中存在一个全局的环境变量,在执行任何命令时都会去这个路径查找,当操作系统执行系统内部的命令时,就会先去这个路径下查找,查到到后直接执行。所以如果想不加./直接让操作系统执行我们写的.exe就可以将我们写的程序移到PATH所在路径。当然一般情况下不推荐使用这种方式,因为会对全局环境变量产生污染 。
可以通过 PATH=当前所在路径:PATH (注意一定要加:PATH即拷贝原来的环境变量,不然会直接覆盖掉内存中原来的环境变量)的方式将文件所在路径添加到PATH中。而想wich等指令的搜索也是去PATH下进行搜索的。
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
SHELL : 当前Shell,它的值通常是/bin/bash。

二、环境变量相关指令

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

export

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

通过export可以导出一个环境变量到环境变量中,即导出一个环境变量到当前bash环境中

env命令就可以直接查看相关环境变量信息。
同时main函数中的env也就是当前bash构造出的一个 环境变量表,而此时bash是main的父进程,所以可以得出 环境变量是可以被子进程继承下去的。环境变量具有全局属性,可以被所有的子进程继承下去。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

所以我们在登录使用xshell时,操作系统就会将各种信息加载到环境变量中,以便操作系统识别和使用。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

获取环境变量的三种方式:

一:main命令行第三个参数

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

二:通过第三方变量environ获取

#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;
}

三:系统调用获取或设置环境变量getenv也可以获得具体的环境变量 

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

创建本地变量

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

 比如直接在当前目录下定义一个名为hello的本地变量,内容为bbb,此时进行查询就可以查到hello这个本地变量。

此时env里面是看不到的,此时可以用set才能看到。set即能看到env中的全局环境变量也可以看到本地变量。

三、环境变量通常是具有全局属性的

此时写一个程序通过getenv来获取刚刚创建的本地变量 hello,最终发现是不能被获取的。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

所以可以得出结论 :环境变量可以被子进程继承,而本地变量只在bash内部有效

而想要移除环境变量就需要使用unset 变量名的方式来移除环境变量或本地变量。

当前在xshell上我们所能看到的环境变量都是内存级的,即使现在给它移除或销毁,bash在下次启动时依然可以拿到环境变量,而环境变量往往是存在磁盘中的,每次启动bash时操作系统将其加载到内存。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

在每个人的家目录中,都会存在一个bash_profile

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

这个文件就是用来导出环境变量的。用来当bash启动时来读取当前目录下的环境变量文件。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

我们顺着文件开头的路径再打开.bashrc,再打开/etc/bashrc

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

最终可以看到所有的环境变量都是从这里来的。

具象化的例子来讲,平常我们在当前路径下创建文件,操作系统会直接将所有者所属组时间家目录等信息都配置到文件属性当中,而操作系统正是通过该路径下的环境变量来获取到具体的信息的。这也是环境变量存在的意义。

每一个用户登录时都会有自己的bash_profile

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

我们也可以通过访问根目录下的bash_profile来配置一些自己想要的功能。

Linux:环境变量的特性及获取,Linux,linux,运维,服务器

这样下次再次登录xshell时,就会在开头看到打印出的信息了。 文章来源地址https://www.toymoban.com/news/detail-847775.html

到了这里,关于Linux:环境变量的特性及获取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(66)
  • 【运维】Linux 跨服务器复制文件文件夹

    如果是云服务 建议用内网ip scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来

    2024年02月08日
    浏览(56)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(74)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(58)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(81)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(65)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(84)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(52)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(45)
  • 【Linux环境搭建】用云服务器搭建Linux环境

    目录 1. 我们为什么要学Linux 2. 云服务器购买 3. 远程连接云服务器 4. 如何创建新用户   5. 第一个Linux程序 总结: 写在最后: 作为一个程序员,你必须学好Linux,至于为什么,这个问题, 在我们日后的学习中,自然会慢慢展现出来,而校招对于Linux也有掌握的要求, 所以我们

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包