POSIX 是否保证其所有 shell 实用程序都将解析需要文件的符号链接?

cod*_*oet 5 shell symlink posix

对于采用一个或多个文件作为参数的 POSIX shell 实用程序,POSIX 是否保证可以传递符号链接(并且该实用程序将解析它)?它记录在某处吗?

Ste*_*itt 9

POSIX 不要求它指定的所有实用程序解析作为需要文件名或路径的参数提供的任何符号链接。然而,它确实详细记录了如何处理符号链接(查找 \xe2\x80\x9cSymbolic Link\xe2\x80\x9d 条目)。

\n

作为一般规则,如果路径组件以/.

\n

然后

\n
\n

系统中为四个域建立了默认符号链接策略。在几乎所有情况下,都有一些实用程序选项可以覆盖此默认行为。四个域如下:

\n
    \n
  1. 指定给采用路径名参数的系统调用的符号链接

    \n
  2. \n
  3. 指定为不执行文件层次结构遍历的实用程序的命令行路径名参数的符号链接

    \n
  4. \n
  5. 引用非目录类型文件的符号链接,指定给正在执行文件层次结构遍历的实用程序

    \n
  6. \n
  7. 引用目录类型文件的符号链接,指定给执行文件层次结构遍历的实用程序

    \n
  8. \n
\n
\n

系统调用行为因历史原因而有所不同。

\n

遍历文件系统的实用程序遵循符号链接,但有一些例外。这涵盖了大多数实用程序:

\n
\n

一般规则是此类别的实用程序遵循名为参数的符号链接。

\n
\n

遍历文件系统的实用程序处理除目录之外的文件的符号链接,如果有意义,则不跟踪它们,否则跟踪它们。

\n

对于遍历文件系统的实用程序,POSIX 不强制执行有关目录符号链接的特定行为,但建议实用程序不要遵循符号链接(带有详细的推理)。

\n

上述情况也有例外,具体情况取决于系统是否为符号链接分配某些属性(例如,符号链接是否具有独立于它们链接到的文件的权限)。

\n