我对 Linux 上的很多工具都是新手。快速搜索没有帮助,我只得到了更多关于bash
或 的sh
信息,并且搜索它在某种程度上倾向于bash
在搜索结果中。那里有很多不同的 shell 类型,我什至见过zsh
,因此我猜它们都是来自 的叉子sh
。
已经有一个问题使用bash和sh运行脚本有什么区别?这是类似的:
ash
或sh
用于手头的 docker 容器。我记得ash
会更舒服,但仍然很苗条,我忘了为什么。
ash
和 和之间的主要区别是什么sh
?尺寸、处理方式……?
基本镜像是python:3-alpine
,即使是带有最新标签 (2022-07) 的镜像也同时具有/bin/ash
和/bin/sh
。这两者出现在高山图像中应该是有原因的,而该图像是所有图像中最紧凑的。我用 来称呼它docker-compose -f docker-compose-develop.yaml run --rm MY_CONTAINER ash
。
Ste*_*itt 10
历史上,ash
是阿尔姆奎斯特壳。“sh 兼容”是什么意思?给出了它在 -style shell 的整体上下文中的历史sh
,以及在哪里可以找到 Almquist Shell 的源代码?解释在哪里可以找到它。
如今,在提供名为 的 shell 的 Linux 系统上ash
, it\xe2\x80\x99 或dash
Busybox ash
,两者都源自 Almquist Shell,但有显着差异。
在当前的Linux系统上,包括在容器中,存在三种常见场景:
\nsh
是 Bash (sh
模式) \xe2\x80\x94 这总是比ash
sh
是dash
(Debian 衍生品) \xe2\x80\x94 在此类系统中,安装ash
将导致从ash
到 的符号链接dash
,因此ash
和sh
具有相同的大小sh
是 Busybox \xe2\x80\x94 具体取决于构建 Busybox 时使用的选项,但默认情况下现在 Busyboxsh
是ash
,因此ash
和sh
具有相同的大小(在 Android(也是 Linux)上,sh
是mksh
,并且同样的注释适用于 Bash。)
Shell 可以根据调用方式来改变其行为,因此将 shell 启动为ash
或sh
可能会导致不同的体验。然而,据我所知,默认sh
情况下Busybox 的情况并非如此ash
(如容器映像中的情况)。