路径与命令搜寻顺序
系统里面其实有不少的 ls 命令, 或者是包括内建的 echo 命令,那么来想一想,如果一个命令 (例如 ls) 被下达时, 到底是哪一个 ls 被拿来运行?
- 以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』;这样会直接运行
- 输入命令:如ls,会按照如下顺序搜寻:
- 由 alias 找到该命令来运行;
- 由 bash 内建的 (builtin) 命令来运行;
- 透过 $PATH 这个变量的顺序搜寻到的第一个命令来运行。
builtin命令和外部命令的区别:builtin命令是你用的shell(也是一种程序)自带的程序,外部命令是外部程序。(尽管文件存的地方差不多,都是在
/usr/bin
下) builtin命令好处
运行速度更快
可以影响shell内部状态,如cd可以改变当前shell的目录。而外部命令不行
因此上述寻找命令的过程就一目了然了。输入ll
,先看看有没有alias,找到ll='ls -l'
,再从builtin里找ls
,没找到,就去PATH指向的目录下找ls
文件,列出文件路径。
找echo时,是builtin文件,因此直接列出路径(尽管看上去结果差不多)。
使用type -a command查看该命令如何被解释
Bash的环境配置文件
http://cn.linux.vbird.org/linux_basic/0320bash_4.php
要注意的是, 我们前几个小节谈到的命令别名啦、自定义的变量啦,在你注销 bash 后就会失效,所以你想要保留你的配置, 就得要将这些配置写入配置文件才行。
所以先谈谈 login shell 会读取哪些配置文件?一般来说,login shell 其实只会读取这两个配置文件:
- /etc/profile:这是系统整体的配置,你最好不要修改这个文件;
- ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人配置,你要改自己的数据,就写入这里!
source :读入环境配置文件的命令
更新了bash的配置文件后,需要刷新。要么注销重新登录,要么使用source重新读取配置文件。