为什么 pwd 不接受像 --physical 这样的长选项?

为什么 pwd 不接受像 --physical 这样的长选项?

当我显示命令手册时,它说支持pwd长选项--physical

$ man pwd
PWD(1)                           User Commands                          PWD(1)

NAME
       pwd - print name of current/working directory

SYNOPSIS
       pwd [OPTION]...

DESCRIPTION
       Print the full filename of the current working directory.

       -L, --logical
              use PWD from environment, even if it contains symlinks

       -P, --physical
              avoid all symlinks

但是,当我输入以下内容时,它失败了

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]

为什么多头期权对我不起作用?

我使用的是 RHEL 6.4。没有配置 pwd 的别名。看起来这是标准的 pwd:

$ which pwd
/bin/pwd

答案1

bash有一个内置命令,您只需在 shell 中pwd键入即可使用该命令。pwd

要获得pwd联机帮助页中描述的内容,您需要强制使用外部命令。您可以通过指定可执行文件的完整路径(/bin/pwd在您的情况下)或通过env在行之前添加来完成此操作:env pwd,该行启动env可用于向环境添加设置的命令(但此处未完成),然后env启动指定的命令。由于env没有内置,因此执行pwd“真实” 。/bin/pwd

bash内置命令的优点pwdbash跟踪当前目录,因此获取值的成本为零,而外部命令需要在文件系统中搜索以确定路径,这需要更多的 IO 密集程度。

答案2

该手册页文档/bin/pwd,但是当您运行时,pwd您正在使用内置的 shell;查看输出

type pwd

您的 shell 的内置功能pwd不支持长选项(请参阅您的 shell 文档;由于您使用的是 Bash,help pwd因此将提供摘要)。

相关内容