文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>bash命令的优先级

bash命令的优先级

时间:2005-11-29  来源:xktop

没有次序,这个世界就不知是个什么样子了。

在bash中,各个命令是按照下面的次序进行查找和执行的:
1别名  由alias指定
2关键字 
3函数  由function(){}定义
4内置命令  builtin命令
5脚本或可执行程序  $Path和当前路径中的脚本或可执行文件
我们在编写bash时可以通过builtin、command和enable关键字改变命令的执行次序
builtin:只以内置命令运行
command:只以内置命令或$Path中的脚本和可执行文件运行
enable:与builtin相反,它屏蔽某一内置命令,从而允许某一脚本以内置命令的名称运行而无需给出全路径
enable -n cmd(屏蔽内置命令cmd)  enable cmd(允许内置命令cmd)  enable(打印允许命令列表)  enable -n(打印屏蔽命令列表)
作如下实验:
xk@linux:~/work> function pwd
> {
> echo "This is out func."
> }
xk@linux:~/work>
编写脚本pwd,内容如下:
#!/bin/bash
pwd(){
    echo "This is inside func"
    builtin pwd
}
pwd 
作如下操作:
xk@linux:~/work> chmod a+x pwd             为脚本加上执行权
xk@linux:~/work> pwd                              运行外部定义的pwd函数,优先级高
This is out func.
xk@linux:~/work> ./pwd                            指定全路径执行自编的pwd脚本
This is inside func
/home/xk/work
xk@linux:~/work> builtin pwd                     调用内置pwd
/home/xk/work
xk@linux:~/work> command pwd               调用内置/bin/pwd,因为在PATH变量中没有当前路径.
/home/xk/work
xk@linux:~/work> echo $PATH                   察看PATH变量
/home/xk/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin
xk@linux:~/work> export PATH=.:$PATH     添加当前路径至PATH的最前面,覆盖/bin/pwd,因为PATH是从前向后搜索目录
xk@linux:~/work> echo $PATH                   再次查看,.已经添加    
.:/home/xk/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin
xk@linux:~/work> command pwd               此时运行脚本pwd
This is inside func
/home/xk/work
xk@linux:~/work> enable -n pwd                屏蔽内置命令的pwd
xk@linux:~/work> unset -f pwd                  并且删除当前shell的pwd函数的定义
xk@linux:~/work> pwd                              因为内置命令被屏蔽,又没有函数,所以从PATH中寻找pwd并执行,所以执行当
This is inside func                                       前目录的pwd脚本
/home/xk/work
xk@linux:~/work>

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载