Ubuntu shell 脚本

Ubuntu shell 脚本

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

相关内容