linux中什么是环境变量

发布时间 - 2021-11-30 00:00:00    点击率:
在linux中,环境变量指的是系统预定义的参数;它相当于全局变量,存在于所有的Shell中,具有继承性,可存储有关shell会话和工作环境的信息。

本教程操作环境:linux5.9.8系统、Dell G3电脑。

1、环境变量的概念 

1.1 环境变量的含义 

环境变量一般是指操作系统中指定运行环境的一些参数,即系统预定义的参数。它相当于一个指针,想要查看变量的值,需要加上“$”。 

环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便运行在shell上的程序和脚本访问。这些数据可以是用来识别用户、系统、Shell的特性以及任何其它需要存储的数据。

1.2 环境变量的分类 

1.2.1 按作用的范围分 

在Linux中的变量,可以分为环境变量和本地变量: 

1)环境变量:相当于全局变量,存在于所有的Shell中,具有继承性; 

2)本地变量:相当于局部变量,只存在当前Shell中,本地变量包含环境变量,非环境变量不具有继承性。 

1.2.2 按生存周期分 

1)永久:需要修改配置文件,变量永久生效; 

2)暂时:使用export定义,关闭Shell后失效。

2、环境变量的组织方式

每个程序都有一张环境表,环境表是一个字符指针数组,每个指针指向一个以‘\0’结尾的环境字符串。Main函数的第三个参数就是环境表地址。

3、常见的环境变量 

3.1 PATH 

该变量指定命令的搜索路径。 

【例】 

释:从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。 

3.2 HOME 

该变量指定用户的主工作目录,即用户登录到Linux系统时,默认的目录。 

3.2.1 普通用户下的主工作目录 

【例】 

3.2.2 超级用户下的主工作目录 

【例】 

释:环境变量是一个变量,它的值随着用户的不同而不同。 

3.3 HISTSIZE 

该变量指定保存历史命令的数目。 

【例】 

释:在Linux系统中最多保存1000条命令记录。 

3.4 LOGNAME 

该变量指定显示用户的登录名。 

【例】 

3.5 HOSTNAME 

该变量指定主机名 

【例】 

3.6 SHELL 

变量指定用户当前使用的解析器。 

【例】 

4、修改和显示环境变量的命令 

4.1 echo 

该命令用于显示某个环境变量的值。 

4.2 env 

该命令指定显示所有的环境变量和值。 

【例】 

4.3 set 

该命令指定本地变量。 

【例】 

4.4 export 

该命令指定设置一个新的环境变量。 

【例】 

注意:环境变量一般用英文字母大写加下划线表示。 

4.5 unset 

该命令指定清除环境变量。 

【例】 

4.6 readonly 

该命令用于设置只读环境变量。 

【例】 


释:将环境变量MY_ENV设置为只读模式后,就不能在对它进行修改了,直到用户退出登录后才失效。 

5、存放环境变量的文件 

5.1 /etc/profile 

该文件的作用是当用户登录时获取系统的环境变量,只获取一次。 

5.2 /etc/bashrc 

当执行完/etc/profile文件后,用户想打开bash Shell就会读取该文件。如果想每次打开bash Shell后都执行某些操作,可以在该文件中设置。 

5.3 ~/.bash_profile 

每个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc文件。 

单个用户此文件的修改只会影响到他以后的每一次登陆系统。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么它在每次登陆的时候都会去获取这些新的环境变量或者做某些特殊的操作,但是仅仅在登陆时

5.4 ~/.bashrc 

该文件包含专用于单个人的bash shell的bash信息,当登录时以及每次打开一个新的shell时,该该文件被读取。 

单个用户此文件的修改会影响到他以后的每一次登陆系统和每一次新开一个bash。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么每次它新登陆系统或者新开一个bash,都会去获取相应的特殊的环境变量和特殊操作。 

5.5 ~/.bash_logout 

当每次退出系统(退出bash shell)时,执行该文件。

6、通过代码获取环境变量 

【例1】 

注:命令行第3个参数是环境表地址,是一个字符型数组指针。 

运行结果: 

【例2】通过第三方变量environ获取 

运行结果: 

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

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

通常用getenv和putenv函数来访问特定的环境变量,而不是用environ变量。但是,如果要查看整个环境,则必须使用environ指针。 

【例1】 

运行结果: 

【例2】 

运行结果: 

释:“export MY_ENV=Love”导出环境变量,可以被子程序继承下去;而“MY_ENV=Love”导出的是普通变量,不具有继承性(与getenv函数一样)。

相关推荐:《Linux视频教程》


# linux  # 环境变量  # 该文件  # 是一个  # 用户登录  # 就会  # 在这里  # 全局变量  # 新开  # 影响到  # 会去  # 的是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在服务器上三步完成建站并提升流量?  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何解决hover在ie6中的兼容性问题  Android 常见的图片加载框架详细介绍  如何在阿里云通过域名搭建网站?  如何用美橙互联一键搭建多站合一网站?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  中国移动官方网站首页入口 中国移动官网网页登录  如何确认建站备案号应放置的具体位置?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  php json中文编码为null的解决办法  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Python制作简易注册登录系统  如何快速生成专业多端适配建站电话?  JavaScript实现Fly Bird小游戏  济南网站建设制作公司,室内设计网站一般都有哪些功能?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel中的withCount方法怎么高效统计关联模型数量  详解jQuery停止动画——stop()方法的使用  大同网页,大同瑞慈医院官网?  如何用已有域名快速搭建网站?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何实现事件和监听器?(Event & Listener实战)  简单实现Android文件上传  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Python3.6正式版新特性预览  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  深圳网站制作培训,深圳哪些招聘网站比较好?  如何彻底删除建站之星生成的Banner?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何实现数据库事务?(DB Facade示例)  怎么用AI帮你设计一套个性化的手机App图标?  昵图网官网入口 昵图网素材平台官方入口  如何快速完成中国万网建站详细流程?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  UC浏览器如何设置启动页 UC浏览器启动页设置方法