可执行文件的默认首选项优于同名的内置函数

Ber*_*ard 7 shell bash path shell-builtin

我在玩一些可执行文件的名称,将它们放在一个文件夹中~/bin,该文件夹位于我的$PATH. 现在我想知道如何设置bash-3.2终端的首选项,以便它选择这些可执行文件而不是要执行的内置程序或别名。

例如,如果我将一个名为的脚本放在cd中的目录中$PATHcd则仍会执行内置的 for 。但是,如果我创建一个aliasfor cd,那么这个别名将被执行,覆盖内置函数。

$ type cd
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 有没有办法让可执行文件在$PATH默认情况下优先于内置的shell,只执行,例如cd,不必求助于使用命令builtincommand

  2. 我也对任何讨论这种偏好的官方参考资料感兴趣(不是我理解的推理)。

注意:这个问题纯粹是出于个人教育目的,我想知道为什么它会这样工作。

dev*_*ull 5

我的问题是,有没有办法让可执行文件$PATH 优先于 shell 内置,只执行,例如cd 没有内置或命令?

您可以使用内置函数enable禁用/启用内置函数。说:

enable -n cd
Run Code Online (Sandbox Code Playgroud)

禁用内置cd. 说enable cd启用内置。

下面将给出一个在内置命令和命令之间切换的示例:

$ type cd
cd is a shell builtin
$ enable -n cd
$ type cd
-bash: type: cd: not found
$ enable cd
$ type kill
kill is a shell builtin
$ enable -n kill
$ type kill
kill is /bin/kill
$ enable kill
$ type kill
kill is a shell builtin
Run Code Online (Sandbox Code Playgroud)