假设我在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.