『忘了再学』Shell基础 — 13、环境变量(一)
提示:
在Shell中,环境变量分为两种。一种是用户自定义的环境变量,另一种是系统自带的环境变量。
而在系统自带的环境变量中,PATH环境变量、PS1环境变量、LANG语系变量需要进行说明一下。
本篇文章主要说明用户自定义的环境变量,和PATH环境变量。
1、用户自定义的环境变量
(1)环境变量设置
使用export关键字声明的变量就是环境变量。
格式:
[root@localhost ~]# export AGE="18"
也可以先定义一个自定义变量,然后把自定义变量声明称环境变量。如下:
[root@localhost ~]# AGE=18
[root@localhost ~]# export AGE
注:
环境变量名称一般要用大写。
环境变量的作用域,在父子Shell中都可查看。
(2)查询自定义环境变量
env命令和set命令的区别是,set命令可以查看所有变量,而env命令只能查看环境变量。(具体看上一篇文章)
这里说明一下env命令和set命令所查看的一些重要的内容,以后就不详细说明了。
(1)env命令

(2)set命令
env命令可以查询到所有的环境变量,但是还有一些变量是env命令查看不到的,这些变量虽然不是环境变量,却是和Bash操作接口相关的变量,这些变量也对我们的Bash操作终端起到了重要的作用。这些变量就只能用set命令来查看了,只列出重要的内容,如下:

(3)删除自定义环境变量
和用户定义变量一样,用unset命令删除变量。
#删除环境变量 gender
[root@localhost ~]# unset gender
2、系统自带的环境变量——PATH环境变量
系统自带的环境变量的名称和作用都不能够改变。
系统的环境变量,用上边介绍的env命令和set命令都可以查出。我们接下来说明几个比较重点的环境变量。
(1)PATH环境变量
查看当前系统PATH环境变量的值:
[root@localhost ~ ] # echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
每次执行env命令和set命令都要在好多变量中找我们需要查看的变量很麻烦,可以使用上面的方式直接查看我们所需的变量的值。
(2)PATH环境变量的作用
PATH变量的作用:系统查找命令的路径。
你回想一下,在说明Shell执行脚本运行的时候说过,有两种方法可以执行Shell脚本,一个是通过绝对路径或者相对路径执行脚本,如:/root/hello.sh或者./hello.sh。还有一种方法是直接执行bash命令执行脚本,如:bash hello.sh。我们当时建议用第一种方式。(在Linux系统中,所有的执行文件,都应该使用绝对路径来执行它)
但是我们有没有发现,比如我们之前所执行过的一些系统命令,如ls命令,我们知道ls命令在系统的bin目录下。如下图:

但是我们直接执行ls命令,并没有使用绝对路径,系统就能够执行ls命令,这是为什么呢?
根本原因就是在这个PATH环境变量中。
PATH环境变量中配置的这些路径,就是系统查找命令的路径。也就是说当我们输入了一个程序名,如果没有写命令的路径,系统就会到PATH环境变量定义的路径中去寻找,是否有可以执行的程序。从左到右一个一个目录查找你所要执行的命令,找到了就直接执行,而如果把所有的目录都搜索完了,也没有找到你所执行的命令,就会报错,提示你-bash:变量名:command not found(命令没找到)。换句话说也就是你这个命令执行的不正确,也或者说你所执行的命令,并没有配置在PATH环境变量中。
注意:PATH环境变量的值中,是用“:”分割的路径。
(3)配置命令的环境变量
我们如何才能让一个自定义的程序或者脚本,不用输入绝对路径就能够执行呢?
有两种方式:
- 第一种方式:直接把程序或者脚本的可执行文件,直接复制到PATH环境变量下的任一个目录下即可。
#拷贝hello.sh文件到bin目录下
[root@localhost ~]# cp /root/sh/hello.sh /bin/ #hello.sh脚本即可以直接执行
[root@localhost ~]# hello.sh
Perhaps only heart no holdings, to being on land, settle.
也许只有心无所持,才能随遇而安。
- 第二种方式:把程序或者脚本所有在的路径,添加到PATH环境变量中即可。
通过变量的叠加就可以实现:#在变量PATH的后面,加入/root/sh目录
[root@localhost ~]# PATH="$PATH":/root/sh #查询PATH的值,变量叠加生效了
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/sh
注意的是,我们这样定义的PATH环境变量只是临时生效,一旦重启或注销就会消失,如果想要永久生效,需要写入环境变量配置文件
/etc/profile中。(可查看后续文章)
『忘了再学』Shell基础 — 13、环境变量(一)的更多相关文章
- 『忘了再学』Shell基础 — 11、变量定义的规则和分类
目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...
- 『忘了再学』Shell基础 — 21、变量的测试与内容置换
目录 1.什么是变量的测试与内容置换 2.变量的测试与内容置换 3.示例 例1: 例2: 例3: 1.什么是变量的测试与内容置换 我们之前说过,在Shell中,一个变量未定义,和一个变量为空值的输出效 ...
- 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明
目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...
- 『忘了再学』Shell基础 — 4、Bash基本功能(history命令)
目录 1.history历史命令 2.设置命令历史记录的条数 3.清空历史命令 4.历史命令的调用 5.命令与文件的补全 在Linux系统中默认的Shell就是Bourne-AgainShell(简称 ...
- 『忘了再学』Shell基础 — 23、其他环境变量配置文件
目录 1.注销时生效的环境变量配置文件 2.其他配置文件 3.Shell登录信息相关文件 (1)/etc/issue文件说明 (2)/etc/issue.net文件说明 (3)/etc/motd文件说 ...
- 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)
目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...
- 『忘了再学』Shell基础 — 12、用户自定义变量
目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...
- 『忘了再学』Shell基础 — 14、环境变量(二)
目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...
随机推荐
- 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)
在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...
- python模块 | 时间处理模块—datetime模块
在python中,与时间处理相关的模块有 time,datetime,calendar. 时间的两个概念: UTC(世界协调时): 整个地球分为二十四时区,每个时区都有自己的本地时间.格林威治天文时间 ...
- flex布局中父容器属性部分演示效果
如图可见flex的属性分为父容器和子容器的属性共12个.关于这些属性具体代表什么意思,网上有很多教程的文章,自觉不能写得比别人更好,所以这里主要写了一些例子关于父容器属性效果的演示,希望可以帮助大家理 ...
- Socket.io+Notification实现浏览器消息推送
前言 socket.io: 包含对websocket的封装,可实现服务端和客户端之前的通信.详情见官网(虽然是英文文档,但还是通俗易懂).Notification: Html5新特性,用于浏览器的桌面 ...
- 论文阅读总结-Patient clustering improves efficiency of federated machine learning to predict mortality and hospital stay time using distributed electronic medical records
一.论文提出的方法: 使用进入ICU前48h的用药特征作为预测因子预测重症监护患者的死亡率和ICU住院时间. 用到了联邦学习,自编码器,k-means聚类算法,社区检测. 数据集:从50家患者人数超过 ...
- JavaScript实现按钮改变网页背景色
运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...
- flex布局控制最后一个元素右浮动
可以在最后一个元素添加css属性 margin-left: auto; 例如我一排排列的元素 ,子元素并没有完全排列撑开父元素的宽度,这时候要使最后一个元素想最右 可以让最后一个元素的 margin- ...
- DRF-认证权限频率
目录 DRF-认证权限频率 认证 登录接口 认证 权限 作用 使用 频率 作用 使用 认证权限频率+五个接口 模型 视图 序列化器 认证权限频率类 配置文件 路由 DRF-认证权限频率 前后端混合开发 ...
- OllyDbg---call和ret指令
call和ret call指令 cal指令是转移到指定的子程序处,后面紧跟的操作数就是给定的地址. 例如,call 401362表示转移到地址401362处,调用401362处的子程序,当子程序调用完 ...
- redis的基础命令操作
文章目录 前言 一.字符串类型 二.哈希类型 三.列表类型 四.集合类型 五.有序集合类型 六.通过命令 前言 redis的数据结构 redis存储的是key,value格式的数据,其中的key是字符 ...