日期:20171114
同名的疑问
不知道大家有没有想过,如果两个命令同名,会执行哪一个?
例如,我写了一个程序,名字为cd,而且还放在PATH路径下,那么执行cd时,会是原cd,还是我写的cd?
shell寻找命令的顺序
其实呢,shel在执行命令时,并不是直接就在PATH路径中查找,而是按照固定的位置依次寻找命令。搜索顺序如下,
1、别名,使用alias创建的命令。
2、关键字,如if,for。
3、函数
4、内置命令,如cd,pwd等
5、外部命令,在PATH路径中寻找
直接“定位”
如果我想执行的是我自己的程序cd呢?或者跳过1,2,3直接执行内置命令呢?
那么这时候就用到command和builtin这两个命令了。
command,执行PATH下的命令。
builtin,执行内置命令。
查询命令类型(type)
当你想知道你所执行的命令究竟是别名,还是内置,还是自己写的程序。。。
这时候type就可以上场啦。
关闭内置命令(enable)
发现一个有趣的东东,enable。
enable是一个内置命令,可以启用或禁用内置命令。(enable还能关闭自己呢!至于关闭后,怎么再开启,那就是个问题了。)
授人以渔
很多时候在想,对于书里面的知识点,作者是从哪里学到的呢?从何可以获得更多关于书上某个点的知识?
为了这些问题,我决定在每篇博客中,添加博客内容的来源。
那么这篇博客,是看了,
《Shell编程从入门到精通》,张昊,程国刚。
Linux命令学习方法
除了书上或者网站能学习到linux命令,还可以利用man,info,和help。
man和info多数是查外部命令。
而查内置命令,要用help喔!