首页 理论教育 实用的LinuxShell编程内置命令,改变命令解释顺序

实用的LinuxShell编程内置命令,改变命令解释顺序

时间:2023-11-18 理论教育 版权反馈
【摘要】:Bash提供的三条内置命令可以改变命令的处理顺序。1)command<命令>,忽略别名和函数,按照内置命令和外部命令来处理。3)enable,禁用或使能内置命令。下面这条命令的意思是运行内置命令pwd:因为ls不是内置命令,所以builtin后面的ls命令不会被执行。重名情况下,可以在前面加builtin来确保内置命令被执行,或者用命令enable-n来禁止某条内置命令被执行,从而使外部命令得到执行的机会。

实用的LinuxShell编程内置命令,改变命令解释顺序

Bash处理命令的顺序并非不可改变。Bash提供的三条内置命令可以改变命令的处理顺序。

1)command<命令>,忽略别名和函数,按照内置命令和外部命令来处理。

2)builtin<命令>,只查找内置命令,忽略函数和外部命令。

3)enable,禁用或使能内置命令。

下面分别举例说明。

pwd的作用原本是显示当前目录,下面设置一个名字为pwd的别名:

因为别名的优先级最高,所以执行pwd就会执行别名pwd,而不是原本的pwd命令:

这时,要想执行原本的pwd,前面需要加上command。command pwd的作用是,不在别名列表和函数列表里面查找pwd,而是在内置命令和外部命令里面查找并运行pwd,这样,原本的内置命令pwd得到执行:

builtin的作用是只查找内置命令,否则会给出“不是内置命令(not a shell builtin)”的提示。下面这条命令的意思是运行内置命令pwd:(www.xing528.com)

因为ls不是内置命令,所以builtin后面的ls命令不会被执行

enable的选项-n用来禁用内置命令。例如,禁用内置命令alias后,将无法使用它:

原本alias -p命令可以显示当前的别名列表,禁用alias后,遇到了command not found的提示。

再运行下面的命令,使能内置命令alias,然后内置命令alias就可以正常使用了。

因为外部程序的优先级不如内置命令高,当自己写的脚本与某个内置命令重名、并希望默认情况下自己的脚本而不是内置命令被执行时,可以用enable-n命令来禁用相应的内置命令。但是,正确的做法是,尽可能不要让自己写的脚本和函数与已有的命令(包括内置的与外部的)重名。

接本章第1节继续讨论。操作系统也提供了内置命令,以Ubuntu为例,下面的这几条命令,内置命令包含它们,外部命令当中也有它们。

重名情况下,可以在前面加builtin来确保内置命令被执行,或者用命令enable-n来禁止某条内置命令被执行,从而使外部命令得到执行的机会。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈