脚本中的命令失败并出现“未找到”错误,但在命令行上运行良好

脚本中的命令失败并出现“未找到”错误,但在命令行上运行良好

我在嵌入式 ARM 设备上创建了一个最小环境,仅包含 Linux 内核、Busybox 和 initrd 映像中的最小文件系统。我有一个在启动时inittab运行的程序。/etc/init.d/rcS

我有以下行rcS

/bin/mount -t proc none /proc

然而,当这一行运行时,我得到

/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found

最后一行rcS似乎要执行——那一行只是/bin/sh为了获取一个 shell,并且该 shell 会自动打开。

当我从 shell 运行完全相同的 mount 命令时,它可以工作。/bin/mount是 的符号链接/bin/busybox

为什么我的脚本找不到/bin/mount

答案1

事实证明,文件中的空格实际上是两个字符0xD0 0xA0(Unicode?也许这只是巧合,它们看起来像 CR/LF 左移 4 位……它们也显示为单个空白字符,而不是两个)。错误消息立即提供了线索 - 它应该只显示命令,而不是参数,但该行中没有任何空格。

一旦发现这一点,我便意识到了原因可能是什么。我的操作系统是 Windows 7,我在 VirtualBox VM 中运行 Ubuntu,并且使用共享剪贴板。我从 Windows 7 上的 Chrome 网页复制了脚本,并将其粘贴到 Ubuntu 上的 gedit 中。要么这些字符是从网页复制的,要么从页面到 gedit 的过程中编码出现问题。

用空格字符替换它们就解决了。

相关内容