在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

首先我们需要知道Linux的环境变量分为两部分

全局环境变量
"env"

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

局部环境变量+全局环境变量
“set”

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

我们之前改动的"etc/profile"中的"PATH"便是其中一个全局环境变量
比较遗憾的是,我找不到只显示局部变量的命令,所以只能手动找不同了

在这里我们可以发现下图比上图多出了这些地方

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

为什么会有这些区别呢,首先我们就需要知道这些变量的一些信息

全局环境变量
简而言之,全局环境变量对于shell会话和所有生成的子shell都是可见的
那"可见"是什么意思呢?简单,"printenv"一下

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

出来的这些就是"可见"的表现了,实际上我们还能使用"env"查询
但是相比“env”而言,"printenv"还能显示单条的变量,而“env”不能。

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

除了"printenv"外。"echo $XXXX"也有同样的效果

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

局部环境变量
局部环境变量相比于全局环境变量,他们只能见于定义他们的进程之中
但这并不意味着它们不重要,相反,它们和全局环境变量一样重要。

这里我们就讲一个局部环境变量的应用

用户自定义变量

当我们启动了一个shell进程的时候,这个进程的局部环境变量或者说用户环境变量就会被创建出来
它不会以持久的形式进行储存,意味着我们可以查询,增加,变动和删除这些局部环境变量

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

异常简单不是吗?在我们后面学习shell脚本的时候,这个操作非常有用
但是越是简单的地方,就越需要注意

首先我们可能会把编程的习惯带到这里
比如我在编码的时候喜欢在等号前后隔一个空格来增加代码辨识度。自认为是一个好习惯,但是在这里,会产生错误

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

同时我们要注意,用这种方法创建的局部环境变量只能在创建它的shell下可用,包括它创建的子shell也无法使用

在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

那么全局环境变量又如何呢?
这里我们就要使用前文中使用的命令"export"

export 的基本语法是 “exprot XXXX”
在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了

此时我们便可以在子shell下访问到父shell创建的环境变量了

我们把“export”和之前的值结合一下
在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了
是不是和之前我们设置“PATH”的时候差不多呢
没错,我们之前使用export设置PATH便是在设置一个全局环境变量,这个全局环境变量便使得我们能够访问那些目录下的命令

但是我们要注意一点,我们在子shell下设置的全局环境变量无法被创建它的父shell以及父shell新创建的子shelll所访问的
在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了
这意味着它同样不是持久的,也只是存在于shell当中,受shell的生命周期控制的

那么,让我们回到一开始的问题
在“PATH”设置出错的情况下为什么键入"export PATH=/usr/bin:/usr/sbin:/bin:/sbin"后就可以使用常用命令了呢?
答:
我们用“export”命令将本shell中的环境变量改回正确的路径,使得shell能根据正确的PATH寻找相关命令
你甚至可以直接键入"PATH=/usr/bin"创建局部环境变量来使shell能正确访问放有Linux常用软件。

PS
为什么"export"在PATH设置出错的时候仍能使用呢?
因为它使bash内置的命令,同样是的还有"set",感兴趣的同学可以自己试试

上一篇:R1-013 Shell函数使用规则


下一篇:对称加解密算法解析