我经常发现自己需要描述一个可以在所有主要shell解释器上执行的简单Linux命令(ksh,bash,sh),但我不知道如何表明。一些示例包括:ls
,cd
或cp
。
为了具体,我想说的是没有提到任何特别的shell。在SQL上下文中,这很简单:“SQL”是指所有类型(Oracle,MSSQL等)之间的共享标准。所以似乎相信这个术语是“shell”,但即使它要求你使用更具体的shell标签,暗示没有可行的共享功能。
Unix / Linux命令shell之间是否存在所有共享语法的名称,或者它根本不存在?
答案 0 :(得分:7)
ls
,cd
和cp
都是POSIX调用 utilities 的所有实例。
实用程序可能是 外部 (文件系统中的可执行文件)或 内置 (内部到壳)。
某些实用程序既有 regular shell built-in ,也有外部实用程序(例如test
)。
此外,还有 special built-in utilities (例如.
),它们仅在shell内部。
从更广泛的角度来看,您可以将它们称为 POSIX / [标准] Unix [命令行]实用程序。
POSIX要求what utilities are part of the standard 在链接页面上向下滚动到项目符号Utilities
。
(必须出现在构象系统上)以及他们必须支持的具体选项以及必须展示的行为。
实际平台通常是超集 - 无论是提供非标准实用程序还是标准实用程序都支持其他非标准选项。
要参考标准化shell语言语法,您可以使用术语[POSIX] shell command language,但经常使用缩写sh
或/bin/sh
,基于事实上,类似Unix的系统上的默认shell只能用于实现POSIX强制要求(仅此而已)。
请注意, 内置实用程序是特定于shell的概念(并且POSIX兼容的shell必须支持POSIX shell语言规范中指定的选项和行为)。
如果不涉及shell,则无法(直接)调用它们,例如使用xargs
或find ... -exec
时。
相比之下, 外部实用程序独立于shell 存在,即使它们通常是来自shell的 。