在我的桌面 ubuntu 主机上,如果我运行仅包含该行的脚本
echo $SHELL
它打印
/bin/bash
但是在运行busybox的不同主机上,如果我做同样的事情,我会得到
/bin/sh
打印
而且我注意到,如果我在我的 ubuntu 机器上创建脚本并在busybox 主机上运行它们,那么有时我会得到不同的行为。
我想做的是在我的 ubuntu 桌面上创建一个快捷方式到一些终端会话,该会话将运行 Bourne Shell,/bin/sh,而不是 Bourne Again Shell,bash。这是可能的还是我的想法是错误的?
首先,您应该阅读有关POSIX和不同的 shell 实现的信息。然后,如果您需要可移植性,请尽量将您的脚本编写为符合 POSIX 标准。
为了测试您的脚本以使用busybox,您可以安装并运行busybox 默认shell
ash
来检查您的脚本语法以使用busybox:但这可能还不够,因为它仍将使用默认工具的 GNU 版本,并拥有所有其他已安装的程序,这些程序可能未随您的 busybox 一起安装。
如果您有docker ,则可以仅使用其默认工具运行
busybox
容器: