2、shell命令解析器和环境变量

此文编写参照韦东山老师的视频教程和百问网的wiki教程

1、什么是shell?

shell是一个命令解析器,是用来解析命令的,或者说它是一个程序,它是我们和linux系统交互的一种工具,当我们在终端输入一系列的字符串时,shell会接收它们,并且再终端显示出来,当按回车键的时候,此时shell就会解析这些字符串,并且会去寻找和字符串对应的程序,最后执行程序,那么问题来了,要去哪里寻找呢?它会到一个默认的路径去寻找,那么这个默认路径又是由什么所决定的呢?它是由环境变量所决定的。那么问题又来了什么又是环境变量呢?

2、什么是环境变量?

PATH说简单点就是一个字符串变量,当输入命令的时候系统会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候Linux会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。
在这里插入图片描述

补充说明:ps是用来报告程序执行状况的指令,
-a  显示所有终端机下执行的程序,除了阶段作业领导者之外。
 a  显示现行终端机下的所有程序,包括其他用户的程序。
 -A  显示所有程序。

如此处输入pwd这个字符串,按下回车后,那么就会将pwd发送给shell这个应用程序,然后shell就会去解析这个字符串,并且会去PATH里面记录的路径里找对应的执行程序,这个执行程序也就是命令,到找到后,就执行这个程序或者说是命令。上面表示pwd是在bin目录下的。

3、怎么设置环境变量?

以在PATH中添加/home/book目录为例:

2.1 永久设置之方法1,对所有用户都有效:
修改/etc/environment,比如:sudo gedit /etc/environment,然后添加下行:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/book"

然后重启系统或重新登录。

2.2 永久设置之方法2,只对当前用户有效:
修改~/.bashrc,在行尾添加或修改:

export PATH=$PATH:/home/book

然后重启系统或重新登录。

2.3 临时设置:
在终端执行以下命令,这只对当前终端有效:
export PATH=$PATH:/home/book
在这里插入图片描述
command not found的原因:

  1. PATH所确定的目录中无此程序
  2. 它不是可执行的程序
    此处运行的结果显然是原因1,那么我们可以设置下环境变量,此时需要通过export命令来设置

export:设置或显示环境变量。
语法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参  数:
-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

所以我们下面设置一下环境变量
在这里插入图片描述

4、补充

上面我们说到在shell里面输入字符串按下回车之后回到PATH指定的目录查找对应的程序,然后执行程序,其实这是片面的,我们可以在shell里面用绝对路径或者相对路径指定要找的程序。同样是上面一个例子。
在这里插入图片描述
这里并没有去设置环境变量,但是也是达到了去设置环境变量的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值