IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux下的环境变量 -> 正文阅读

[系统运维]Linux下的环境变量

什么是环境变量

在 Linux Shell 登录成功以后,Linux 会从文件中获取一系列的数据为该次登录
所用,这些数据会在某些指令或某些程序中被使用到。这些数据就称为 Linux 
Shell 运行时的环境。环境中的数据可以大致分为四种:环境变量,Shell 变量,
别名(alias),Shell 函数。

环境变量来自哪些文件?

Linux 会从文件中获取环境变量。那么是哪些文件在为 Linux Shell 提供环境变量呢?(后面再解释 login shell 与 non-login shell)

对于 login shell:

/etc/profile,这个文件是 login shell 的全局环境变量配置文件,全局意味着对所有用户都有效
/.bash_profile,/.bash_login,~/.profile,这三个文件用于配置用户个人的环境变量,所以每个用户的 HOME 目录下都会有至少这三个文件中的一个(取决于 linux 的发行版本),读取时只会读取其中一个。login shell 登录时 linux 会先读取 /etc/profile 这个全局配置文件,再在HOME目录按照一定顺序寻找这三个文件,最后会读取找到的第一个文件。若与 /etc/profile 中定义的变量有冲突,会将该变量覆盖。

对于 non-login shell:

/etc/bash.bashrc,这个文件是 non-login shell 的全局环境变量配置文件。(网上一些博客的介绍中,这个文件不是 /etc/bash.bashrc 而 是/etc/bashrc,或许这取决于发行版本)~/.bashrc,这个文件是用户个人的 non-login shell 环境变量配置文件,与 login shell 相同,该文件在 /etc/bash.bashrc 后执行,有冲突时,该文件也会将冲突的变量重写。
以上关于文件读取顺序的描述参考于这篇文章。

各种 linux 发行版都带有一个命令 su,若直接 “su 用户名”,则会以 non-login shell 登录到该用户,若加上选项 “-” 或是 “-l” 或是 “–login”,则会以 login shell 登录到该用户。各位读者若想更清楚的感受这些文件的读取过程,可以利用这个命令,通过修改这些文件来进行测试。

login shell 与 non-login shell

登录 Linux Shell 有两种方法:login shell 与 non-login shell。login shell 通常会作为第一个登录的shell(比如开机时的登录),而 non-login shell 通常是开机后从GUI直接启动的 shell。 通过这两种方法登录的环境变量会有一些区别。

  1. non-login shell 会继承上一个进程(通常是 login shell)中的一些环境变量

可以通过一个简单测试来验证。

首先,在当前 shell 中自定一个变量 foo=FOO,并export(为了让子进程也能使用这个变量,而 shell 本身就是一个程序):

rit@rit-X405UA:~$ foo=FOO
rit@rit-X405UA:~$ export foo
接着,以 login shell 登录到另一个账户 bob,并尝试查看 foo 变量:

rit@rit-X405UA:~$ su - bob
Password:
bob@rit-X405UA:~$ echo $foo

bob@rit-X405UA:~$
结果 foo 变量为空,在这里说明 foo 未被定义。

接着,以 non-login shell 登录到另一个账户 bob,并查看 foo 变量:

rit@rit-X405UA:~$ su bob
Password:
bob@rit-X405UA:/home/rit$ echo $foo
FOO
结果 foo 变量与 rit 这个用户的 shell 中的定义一致。

说明 non-login shell 继承了上一个进程的用户自定变量,而 login shell 没有继承。

常见的环境变量:

PATH

作用: PATH包含了指定命令的搜索路径,指定操作系统需要使用到的可执行程序的位置。
在系统PATH环境变量里面存储了很多条路径,当运行命令时会逐个在路径下找该命令,而ls,cd等指令已经被存储进PATH环境变量,故而无需加“ ./ ”,对于自己的可执行程序,并没有添加到环境变量中,所以需加“ ./ ”是通过相对路径指定在当前目录下才能被bash找到并运行

修改PATH

用export将程序的路径添加到环境变量(export 代表使用这个变量)
???export PATH=$PATH:/home/yxy/mycodes

冒号在linux中的意思是分隔符,PATH: HOME/bin表示在保留原来的PATH环境变量的基础上,再增加HOME/bin这个路径作为新的$PATH环境变量

HOME

作用: 存放当前用户的主工作目录(也称家目录)
通过echo $HOME查看HOME变量

文章参考
文章参考

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:39:50  更:2021-10-09 16:41:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:40:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码