Ber*_*ard 7 shell bash path shell-builtin
我在玩一些可执行文件的名称,将它们放在一个文件夹中~/bin
,该文件夹位于我的$PATH
. 现在我想知道如何设置bash-3.2
终端的首选项,以便它选择这些可执行文件而不是要执行的内置程序或别名。
例如,如果我将一个名为的脚本放在cd
中的目录中$PATH
,cd
则仍会执行内置的 for 。但是,如果我创建一个alias
for cd
,那么这个别名将被执行,覆盖内置函数。
$ type cd
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)
有没有办法让可执行文件在$PATH
默认情况下优先于内置的shell,只执行,例如cd
,不必求助于使用命令builtin
或command
?
我也对任何讨论这种偏好的官方参考资料感兴趣(不是我理解的推理)。
注意:这个问题纯粹是出于个人教育目的,我想知道为什么它会这样工作。
我的问题是,有没有办法让可执行文件
$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)