shell中对于命令的搜寻顺序

当你在shell命令行输入一条命令时,shell的搜寻顺序是如何的呢?当你的脚本名字和shell中的函数名字重名,shell是如何决定运行哪一个的?

在shell中,shell对于命令的搜寻优先级为:

1 Alias

2 keyword,如if

3 Function

4 Built-in,如cd

4 PATH中的脚本以及可运行程序

 

在shell中,有3个命令command,built-in,enable是专门来解决这种重名问题的。

command

command使shell只在Built-in以及PATH中搜寻命令,这个命令比较有用的两个option:

-v 打印要调起的命令的路径

-V 比-v选项更详细的信息

 

built-in

built-in使shell专门搜索Built-in命令

 

enable

enable命令可以关闭开始shell的Built-in命令,在enable后面直接接shell的Built-in命令,开启这个Built-in命令,如果使用了-n选项,就是关闭这个Built-in命令。如果enable只使用-n选项,不接任何命令,就打印所有被关闭的Built-in命令。除了-n选项,比较有用的选项还有:

-p 打印所有enable的Built-in命令

-a 打印所有的Built-in命令,并且带有开启/关闭信息

 

 

但是,最有效的避免冲突的方式,还是使用命令的绝对路径

posted @   chaoguo1234  阅读(826)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示