enable
启动或禁用shell内建命令
概要
enable [-a] [-dnps] [-f filename] [name ...]
主要用途
-
禁用一到多个内建命令。
-
启用一到多个内建命令。
-
直接调用与禁用的内建命令同名且在
$PATH
路径下找到的外部命令。 -
打印所有内建命令,无论是否禁用。
-
打印处于启用状态的内建命令。
-
打印处于禁用状态的内建命令。
-
打印处于启用状态的posix标准内建命令。
-
打印处于禁用状态的posix标准内建命令。
-
打印posix标准内建命令,无论是否禁用。
-
从动态库中加载内建命令。
-
移除从动态库中加载的内建命令。
选项
1-a 打印所有内建命令,无论是否禁用。
2-d 移除从动态库中加载的内建命令。
3-n 禁用内建命令或显示已禁用的内建命令。
4-p 以可复用格式打印。
5-s 只显示处于启动状态的posix标准内建命令。
6-f 动态库中加载内建命令。
7-ns 打印处于禁用状态的posix标准内建命令。
8-as 打印posix标准内建命令,无论是否禁用。
参数
filename:动态库文件名。
name(可选):内建命令,可以为多个。
返回值
enable返回成功,除非name不是内建命令或有错误发生。
例子(以下内容限于篇幅不再列出返回值部分)
1# posix special builtin
2# 假设没有任何内建命令被禁用
3# 禁用两个posix标准内建命令
4enable -n set source
5# 打印处于禁用状态的posix标准内建命令
6enable -ns
7# 打印posix标准内建命令,无论是否禁用。
8enable -as
9# 打印处于启用状态的posix标准内建命令
10enable -s
1# 假设没有任何内建命令被禁用
2# 禁用一到多个内建命令
3enable -n echo pwd
4# 打印所有内建命令,无论是否禁用。
5enable -a
6# 打印处于启用状态的内建命令
7enable
8# 打印处于禁用状态的内建命令
9enable -n
10# 启用一到多个内建命令
11enable pwd
Q&A
Q:请问-f
,-d
,-p
的演示呢?
A:说明一下,-f
与-d
限于个人能力没有找到合适的例子,如果您有更好的例子欢迎提pr;
经过我验证-p
选项是否使用好像没有区别,可以比较enable -p|cat -A
和enable|cat -A
有什么区别。(注:cat -A
用于显示不可见字符)
Q:是否可以禁用enable
自己?之后还能禁用或启用内建命令吗?
A:可以;不能。
注意
linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量
$PATH
指定的路径中依次去查找待执行的命令。看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable
命令我们就能做到了。
- 关于同名命令调用的优先级的知识,请先参考
builtin
命令的提示部分,然后继续阅读下面部分;
当内建命令echo
没有禁用时,如果要调用外部命令echo
,只能这样写/usr/bin/echo
;
当我们禁用了echo
后,优先级顺序变成了这样:
函数 > 外部命令
如果执行命令的环境没有echo
函数,那么调用的echo
就是外部命令。
- 该命令是bash内建命令,相关的帮助信息请查看
help
命令。
来源:https://github.com/jaywcjlove/linux-command
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。