了解 Bash 中“命令”的“-p”选项及其与默认 PATH 的交互

了解 Bash 中“命令”的“-p”选项及其与默认 PATH 的交互

command中的命令:bash使用参数运行命令,忽略任何名为 command 的 shell 函数。

-p选项意味着使用默认值$PATH保证找到所有标准实用程序。

这里提到的默认值到底是什么PATH?当我定义 时export PATH="/home/ozgur/":$PATH,我不会PATH在默认值上添加新路径吗?

例如:

$ export PATH="/home/ozgur/":$PATH
$ echo $PATH
/home/ozgur/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ script.sh
hey, i am working !
$ command -p script.sh
hey, i am working !

当我在命令中使用该-p选项时command,我希望它忽略PATH我定义的新路径,但这并没有发生。我在这里到底缺少什么?-p如果对用户PATH路径的更改未被覆盖,那么使用该选项有何意义?

答案1

我在这里到底缺少什么?

script.sh命令经过哈希处理。如果你运行hash -r,那么command -p script.sh将会按预期失败。但如果你直接运行它,它会再次被哈希。

这看起来确实像是 bash 中的一个错误——在其他 shell 中不会发生。

答案2

它设置了 bash 调用的基本路径STANDARD_UTILS_PATH- 截至这个服务器故障答案,编译时默认为:

/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc

您还可以查看来源GNU 萨凡纳

相关内容