Ubuntu中不同shell有什么区别:
$ cat /etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
答案1
猛击
Bash 是 GNU 项目的 shell。Bash 是 Bourne Again SHell。Bash 是一个与 sh 兼容的 shell,它整合了 Korn shell (ksh) 和 C shell (csh) 的有用功能。它旨在符合 IEEE POSIX P1003.2/ISO 9945.2 Shell 和工具标准。它在编程和交互使用方面都比 sh 提供了功能改进。此外,大多数 sh 脚本都可以由 Bash 运行而无需修改。
Bash 提供的改进包括:
Command line editing Unlimited size command history Job Control Shell Functions and Aliases Indexed arrays of unlimited size Integer arithmetic in any base from two to sixty-four.
来源:1
短跑
Dash 是 Debian Almquist shell (dash) 的缩写。它是一个 Unix 和 Linux shell,比 bash 小得多,但仍旨在符合 POSIX 标准。dash 是 /bin/sh 的 POSIX 兼容实现,旨在尽可能小。dash 是 NetBSD 版本的 ash(Almquist SHell)的直接后代,于 1997 年初移植到 Linux。它在 2002 年更名为 dash。
dash 是 Linux 系统的标准命令解释器。dash 的当前版本正在修改以符合 POSIX 1003.2 和 1003.2a 的 shell 规范。此版本有许多功能使其在某些方面与 Korn shell 相似,但它不是 Korn shell 的克隆。只有 POSIX 指定的功能以及一些 Berkeley 扩展被纳入此 shell。
来源:2
RBash
如果 Bash 以名称 rbash 启动,或者在调用时提供 --restricted 或 -r 选项,则 shell 会变为受限的。受限 shell 用于设置比标准 shell 更受控制的环境。受限 shell 的行为与 bash 相同,但不允许或不执行以下行为:
Changing directories with the cd builtin. Setting or unsetting the values of the SHELL, PATH, ENV, or BASH_ENV variables. Specifying command names containing slashes. Specifying a filename containing a slash as an argument to the . builtin command. Specifying a filename containing a slash as an argument to the -p option to the hash builtin command. Importing function definitions from the shell environment at startup. Parsing the value of SHELLOPTS from the shell environment at startup. Redirecting output using the ‘>’, ‘>|’, ‘<>’, ‘>&’, ‘&>’, and ‘>>’ redirection operators. Using the exec builtin to replace the shell with another command. Adding or deleting builtin commands with the -f and -d options to the enable builtin. Using the enable builtin command to enable disabled shell builtins. Specifying the -p option to the command builtin. Turning off restricted mode with ‘set +r’ or ‘set +o restricted’.
读取任何启动文件后都会强制执行这些限制。
当执行被发现是 shell 脚本的命令时(参见 Shell 脚本),rbash 会关闭为执行该脚本而生成的 shell 中的所有限制。
来源:3
什
sh 是 Bourne shell 的命令名,它是 Unix 以及许多类 Unix 操作系统(包括 Linux)的标准命令语言解释器。sh 是一个命令语言解释器,它执行从命令行字符串、标准输入或指定文件读取的命令。
Bourne shell 由 Stephen Bourne 于 1977 年在 AT&T 的贝尔实验室开发。它是 Unix 版本 7 的默认 shell。大多数类 Unix 系统都包含文件 /bin/sh,它要么是 Bourne shell,要么是兼容 shell 的符号链接(或硬链接)。
来源:4