有什么方法可以找出内置的东西吗?
help
会给你一个完整的清单。您可以help
使用内置命令作为参数运行以获取更详细的信息。info "(bash) Shell Builtin Commands"
将显示所有内置的 Bash 手册。
文件夹pwd
中的(上图)与内置的相同吗?bin
pwd
不,它们完全不同:
$ builtin pwd --help
bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
$ /bin/pwd --help
Usage: /bin/pwd [OPTION]...
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
--help display this help and exit
--version output version information and exit
NOTE: your shell may have its own version of pwd, which usually supersedes
the version described here. Please refer to your shell's documentation
for details about the options it supports.
Report bugs to <bug-coreutils@gnu.org>.
为什么首先要内置东西?它们是特别调整以适应外壳,还是只是为了可以在内部调用它们而不需要新进程?
来自手册:“内置命令对于实现使用单独的实用程序不可能或不方便获得的功能是必要的。” 很难让命令像cd
在外部工作,因为它会影响 shell 的状态。当然,很容易复制pwd
or的行为true
,但 POSIX 标准要求它们是内置的。
我设法抓住了一个pwd
withpwd &
和ps
。这是一种规避还是它们是独立的过程?
运行builtin &
将导致 Bash 在后台运行子 shell。您可以通过执行 轻松看到这一点read &
,因为read
等到它输入。