linux – 如果我使用位于PATH中的二进制文件的名称命名bash脚本函数会发生什么?

假设我在bash脚本中编写了一个函数,其中包含可用二进制文件的名称,比如pwd:
function pwd(){
    echo '/'
}

好吧,这看起来有点奇怪,但问题是:如果在我的脚本中进一步编写命令会发生什么:

cd /usr
pwd

将使用什么密码?另外,我如何强制使用另一个呢?

解决方法

您的函数将被调用,因为它隐藏了内置的pwd.

要强制执行命令,请使用内置命令:

command pwd

从bash手册:

command [-pVv] command [arg ...]
          Run command with args  suppressing  the  normal  shell  function
          lookup.  Only builtin commands or commands found in the PATH are
          executed.  If the -p option is given,the search for command  is
          performed  using  a default value for PATH that is guaranteed to
          find all of the standard utilities.  If  either  the  -V  or  -v
          option is supplied,a description of command is printed.  The -v
          option causes a single word indicating the command or file  name
          used to invoke command to be displayed; the -V option produces a
          more verbose description.  If the -V or -v option  is  supplied,the  exit  status  is  0 if command was found,and 1 if not.  If
          neither option is supplied and an error occurred or command can-
          not  be found,the exit status is 127.  Otherwise,the exit sta-
          tus of the command builtin is the exit status of command.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...