命令的执行过程系统第一次执行外部命令时Hash缓存表为空,系统会先从PTAH路径下寻找命令,找到后会将路径加入到Hasa缓存中,当再次执行此命令时会直接从Hash的路径下执行,如果存在直接执行,如果不存在将继续从PATH下的路径继续查找,Hash表可以提高命令的调用速率。
命令的优先级alias -------------------------------------别名
builtin------------------------------内部命令
hash-------------------------缓存表
$PATH---------------可执行程序或脚本(外部命令)
内部命令与外部命令内部命令是shell自带的
外部命令是安装系统时默认安装的,并且在文件系统下有对应的路径
查看命令是内部命令还是外部命令type [commnd][root@centos6 ~]# type cat #判断cat命令,外部命令显示文件路径
cat is /bin/cat
[root@centos6 ~]# type cd #判断cd命令
cd is a shell builtin
2.命令的别名命名别名只在当前进程中有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
查看进程中所有的别名 alias[root@centos6 ~]#alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
......
定义别名 alias NAME="VALUE"[root@centos6 ~]#alias aubin=cat
[root@centos6 ~]#aubin test
hello world
删除别名[root@centos6 ~]#unalias aubin
[root@centos6 ~]#aubin test
-bash: aubin: command not found
定义对当前用户永久生效的别名[root@centos6 ~]#vim .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias aubin=cat # <<
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
[root@centos6 ~]#. .bash #立即生效
定义指定用户生效的别名[root@centos6 ~]#cd ~ li
[root@centos6 li]#vim .bashrc #编辑用户目录下的.bashrc
定义所有用户生效的别名[root@centos6 ~]#vim /etc/bashrc
alias aubin=cat # <<
[root@centos6 ~]#. /etc/bashrc #立即生效
3.内部命令