day13:环境变量的使用

变量是计算机系统用于保存可变值的数据类型。在Linux系统中,变量名称一般大写,命令则一般小写。Linux系统中的环境变量是用来定义系统运行环境的一些参数,每个用户的家目录就是通过环境变量定义的。需要使用到变量值的时候,通过变量名称就可以直接获取到对应的变量值。

如下:

afei@ubuntu:~$ ls $HOME
Desktop    Downloads  Music     progress.text  Templates  Videos
Documents  file.text  Pictures  Public         test.text  workspace
afei@ubuntu:~$ 
afei@ubuntu:~$ echo $HOME
/home/afei

为了更好的理解环境变量,我们先老看一看用户执行了一条命令之后,Linux系统是怎么去执行它的,命令在Linux中的执行有4个步骤。

第1步:判断用户输入的命令是否是带绝对路径的,(如/bin/echo),如果是绝对路径则直接执行,否则进入第2步。

第2步:Linux系统检查用户输入的命令是否为“别名命令”,即是否是用户为原命令定义的命令别称。

为防止用户误删除文件,Linux 可以将 “ rm -i ” 的别名设置为 rm 那么在执行 rm 的时候,默认就是带了 -i 参数的 rm 命令。

第3步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;如果是外部命令,这些命令会被交由步骤4继续处理。可以使用“type命令名称”来查看用户输入的命令是内部命令还是外部命令:

afei@ubuntu:~$ type echo
echo is a shell builtin
afei@ubuntu:~$ 

第4步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,作用是告诉Bash解释器待执行的命令可能存放的位置,Bash 解释器会在 PATH 变量中的这些位置查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。

afei@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
afei@ubuntu:~$ 
如上,当用户执行外部命令的时候,系统会在这些位置去查找我们执行的命令,找到的话就开始执行
常用的几个环境变量:

变量名称

作用

HOME

用户的主目录(即家目录)

SHELL

用户在使用的Shell解释器名称

HISTSIZE

输出的历史命令记录条数

HISTFILESIZE

保存的历史命令记录条数

MAIL

邮件保存路径

LANG

系统语言、语系名称

RANDOM

生成一个随机数字

PS1

Bash解释器的提示符

PATH

定义解释器搜索用户执行命令的路径

EDITOR

用户默认的文本编辑器

设置环境变量的几种方式:

使用 export 设置临时的环境变量。

这种变量只在当前终端能发挥作用,当关闭终端的时候,变量就自动销毁了,如果要使用,那就需要再次使用 export 进行设置:

昨天介绍原字符的时候有这样一个例子:

afei@ubuntu:~$ export name=afei
afei@ubuntu:~$ echo $name
afei
afei@ubuntu:~$ 

又或者,我们可以将一个路径保存到变量里面,方便使用

afei@ubuntu:~$ export WORKDIR=/home/afei/workspace/
afei@ubuntu:~$ 
afei@ubuntu:~$ cd $WORKDIR
afei@ubuntu:~/workspace$ 

编辑用户家目录下的 .bashrc 文件来配置用户专有的变量

这个变量只在当前用户登录系统的时候才有效,因为系统每次登录进入的时候,都会加载当前用户家目录下的 .bashrc 文件

afei@ubuntu:~$ vim .bashrc
编辑家目录下的 .bashrc 文件,加入变量 NAME= afei-test
afei@ubuntu:~$ source .bashrc
使修改后的 .bashrc 文件生效
afei@ubuntu:~$ 
afei@ubuntu:~$ echo $NAME
afei-test
afei@ubuntu:~$ 

编辑 /etc/profile 设置对所有用户都生效的环境变量

root@ubuntu:/home/afei# vim /etc/profile
切换到 root 用户,编辑 /etc/profile ,添加变量
NAME=afei-test/etc/profile
root@ubuntu:/home/afei# 
root@ubuntu:/home/afei# source /etc/profile
使修改后的 /etc/profile 文件生效
root@ubuntu:/home/afei# echo $NAME
afei-test/etc/profile
root@ubuntu:/home/afei# 

现在设置的变量,是对所有用户生效的,所有用户都可以访问到这个变量。

但是如果当前用户下设置了一个和 NAME 同名的变量,那么系统会优先读取当前用户下设置的变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值