我可以安装驱动器和映像,但无法卸载它们。我得到“外壳级别太高”。我预计这通常发生在脚本调用自身时。
是否有一些由 umount 运行的脚本?我不明白为什么会发生这种情况。
# alias umount
-bash: alias: umount: not found
# mount -o ro sda1.img /tmp/mm
# umount /tmp/mm
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
(repeat forever)
编辑:修复了不正确的复制/粘贴。umount
没有别名
结论:
我需要运行,type umount
因为我不知道 mount 正在运行包装脚本而不是实际的可执行文件
答案1
我预计这通常发生在脚本调用自身时。
是的,这就是正在发生的事情。 bash 脚本不断递归地调用自身(也许与其他程序一起调用,即它可以是一个像这样的循环脚本→其他方案1→其他节目2→脚本……)。
程序umount
本身不调用 shell 脚本。也许umount
已被有缺陷的包装脚本所取代?查看
type umount
file /path/displayed/by/the/previous/command
是每种文件系统类型都会发生这种情况还是只有一种文件系统类型会发生这种情况?您要卸载的映像使用什么文件系统?如果它是一个保险丝文件系统,其上的所有操作(包括卸载)都涉及用户空间代码。如果需要,该代码可以运行 bash 脚本。也许这部分代码有问题。