Skip to content

Commit 97cf2bf

Browse files
authored
Update enable.md
对文档进行了改进;
1 parent 93b7ab4 commit 97cf2bf

File tree

1 file changed

+98
-80
lines changed

1 file changed

+98
-80
lines changed

command/enable.md

Lines changed: 98 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,114 @@
11
enable
22
===
33

4-
启动或关闭shell内建命令
4+
启动或禁用shell内建命令
55

6-
## 补充说明
76

8-
**enable命令** 用于临时关闭或者激活指定的shell内部命令。若要执行的文件名称与shell内建命令相同,可用`enable -n`来关闭shell内建命令。若不加`-n`选项,enable可重新启动关闭的命令。
7+
### 概要
98

10-
linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了。
9+
enable [-a] [-dnps] [-f filename] [name ...]
1110

12-
### 语法
11+
### 主要用途
1312

14-
```shell
15-
enable(选项)(参数)
16-
```
13+
- 禁用一到多个内建命令。
14+
15+
- 启用一到多个内建命令。
16+
17+
- 直接调用与禁用的内建命令同名且在`$PATH`路径下找到的外部命令。
18+
19+
- 打印所有内建命令,无论是否禁用。
20+
- 打印处于启用状态的内建命令。
21+
- 打印处于禁用状态的内建命令。
22+
23+
- 打印处于启用状态的posix标准内建命令。
24+
- 打印处于禁用状态的posix标准内建命令。
25+
- 打印posix标准内建命令,无论是否禁用。
26+
27+
- 从动态库中加载内建命令。
28+
- 移除从动态库中加载的内建命令。
29+
30+
#### 选项
31+
32+
-a 打印所有内建命令,无论是否禁用。
33+
34+
-d 移除从动态库中加载的内建命令。
35+
36+
-n 禁用内建命令或显示已禁用的内建命令。
37+
38+
-p 以可复用格式打印。
39+
40+
-s 只显示处于启动状态的posix标准内建命令。
41+
42+
-f 动态库中加载内建命令。
43+
44+
-ns 打印处于禁用状态的posix标准内建命令。
45+
46+
-as 打印posix标准内建命令,无论是否禁用。
47+
48+
#### 参数
49+
50+
filename:动态库文件名。
51+
52+
name(可选):内建命令,可以为多个。
1753

18-
### 选项
54+
#### 返回值
1955

20-
```shell
21-
-n:关闭指定的内部命令;
22-
-a:显示所有激活的内部命令;
23-
-f:从指定文件中读取内部命令。
56+
enable返回成功,除非name不是内建命令或有错误发生。
57+
58+
### 例子(以下内容限于篇幅不再列出返回值部分)
59+
60+
```
61+
#posix special builtin
62+
#假设没有任何内建命令被禁用
63+
#禁用两个posix标准内建命令
64+
enable -n set source
65+
#打印处于禁用状态的posix标准内建命令
66+
enable -ns
67+
#打印posix标准内建命令,无论是否禁用。
68+
enable -as
69+
#打印处于启用状态的posix标准内建命令
70+
enable -s
2471
```
2572

26-
### 参数
27-
28-
内部命令:指定要关闭或激活的内部命令。
29-
30-
### 实例
31-
32-
使用enable命令显示所有激活的内部命令:
33-
34-
```shell
35-
[root@localhost ~]# enable -a
36-
enable .
37-
enable :
38-
enable alias
39-
enable bg
40-
enable bind
41-
enable break
42-
enable builtin
43-
enable caller
44-
enable cd
45-
enable command
46-
enable compgen
47-
enable complete
48-
enable continue
49-
enable declare
50-
enable dirs
51-
enable disown
52-
enable echo
53-
enable enable
54-
enable eval
55-
enable exec
56-
enable exit
57-
enable export
58-
enable false
59-
enable fc
60-
enable fg
61-
enable getopts
62-
enable hash
63-
enable help
64-
enable history
65-
enable jobs
66-
enable kill
67-
enable let
68-
enable local
69-
enable logout
70-
enable popd
71-
enable printf
72-
enable pushd
73+
```
74+
#假设没有任何内建命令被禁用
75+
#禁用一到多个内建命令
76+
enable -n echo pwd
77+
#打印所有内建命令,无论是否禁用。
78+
enable -a
79+
#打印处于启用状态的内建命令
80+
enable
81+
#打印处于禁用状态的内建命令
82+
enable -n
83+
#启用一到多个内建命令
7384
enable pwd
74-
enable read
75-
enable readonly
76-
enable return
77-
enable set
78-
enable shift
79-
enable shopt
80-
enable source
81-
enable suspend
82-
enable test
83-
enable times
84-
enable trap
85-
enable true
86-
enable type
87-
enable typeset
88-
enable ulimit
89-
enable umask
90-
enable unalias
91-
enable unset
92-
enable wait
9385
```
9486

87+
### Q&A
88+
89+
Q:请问`-f``-d``-p`的演示呢?
90+
91+
A:说明一下,`-f``-d`限于个人能力没有找到合适的例子,如果您有更好的例子欢迎提pr;
92+
经过我验证`-p`选项是否使用好像没有区别,可以比较```enable -p|cat -A``````enable|cat -A``` 有什么区别。(注:`cat -A`用于显示不可见字符)
93+
94+
Q:是否可以禁用`enable`自己?之后还能禁用或启用内建命令吗?
95+
96+
A:可以;不能。
97+
98+
### 注意
99+
100+
> linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量`$PATH`指定的路径中依次去查找待执行的命令。看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了`enable`命令我们就能做到了。
101+
102+
1. 关于同名命令调用的优先级的知识,请先参考`builtin`命令的*提示*部分,然后继续阅读下面部分;
103+
104+
当内建命令`echo`没有禁用时,如果要调用外部命令`echo`,只能这样写`/usr/bin/echo`
105+
106+
当我们禁用了`echo`后,优先级顺序变成了这样:
107+
108+
函数 > 外部命令
109+
110+
如果执行命令的环境没有`echo`函数,那么调用的`echo`就是外部命令。
111+
112+
2. 该命令是bash内建命令,相关的帮助信息请查看 `help` 命令。
95113

96-
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
114+
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->

0 commit comments

Comments
 (0)