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

Mic*_*das 11 bash rhel pwd

当我显示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
Run Code Online (Sandbox Code Playgroud)

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

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
Run Code Online (Sandbox Code Playgroud)

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

我正在使用 RHEL 6.4。没有为 pwd 配置别名。看起来是标准密码:

$ which pwd
/bin/pwd
Run Code Online (Sandbox Code Playgroud)

wur*_*tel 26

bash有一个内置命令pwd,当您pwd在 shell 中简单地键入时,它就是您正在使用的命令。

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

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

  • 这不是外部命令的实际工作方式。https://unix.stackexchange.com/a/413225/5132 (4认同)

Ste*_*itt 11

那个 manpage 文档/bin/pwd,但是当您运行时,pwd您正在使用内置的 shell;看到输出

type pwd
Run Code Online (Sandbox Code Playgroud)

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