【问题标题】:Bash: Chroot command passing 2 string parameters or better run a series of commandsBash:传递 2 个字符串参数或更好地运行一系列命令的 Chroot 命令
【发布时间】:2010-07-28 18:57:18
【问题描述】:

我想做这样的事情:

chroot /mount-point /path/to/script $var1 $var 2

这行得通吗? chrooted Perl 脚本会在这两个参数上传递吗? 如果没有,该怎么做?

要不然有什么办法可以简单的在脚本里做chroot,然后开始做命令之类的

perl script.pl $var1 $var2 etc?

据我了解,只需在bash 中按顺序写入它们只会在chroot 完成后执行它们,并且控制权返回到我没有安装perl 的位置(它是一个运行从PXE)。

【问题讨论】:

    标签: perl bash chroot ramdisk


    【解决方案1】:

    Chroot 应该可以很好地处理这个问题。只要确保您的 perl 脚本可以从 chroot 上下文中找到 Perl 解释器,Perl 可执行文件可以找到它需要的共享库,并且您的变量(如果它们包含路径)具有相对于新根而不是旧根的路径.你可能想编译一个静态链接的 perl 可执行文件,如果这比在 chroot 中复制所需的共享库更容易的话。

    【讨论】:

    • 你能扩展一下编译静态链接的 perl 可执行文件吗?在执行 chroot 并传递我想要的参数之后,这可能是我的下一个问题。
    • 好的,因为这有效,我没有收到进一步的回复,将标记为答案。基本上完整的答案是: chroot /mount-point /path/to/script "$var1" "$var2"
    • 如果 $var1 和 $var2 中有任何空格或 shell 字符,您必须引用它们才能使它们完整地通过。 Re:static 链接,您应该运行“ldd /path/to/your/perl”并查看它需要哪些库。然后,您可以将它们与 perl 可执行文件本身一起复制到 chroot 区域。如果出于某种原因您不想复制这些库,则需要静态重建 Perl。有关如何执行此操作的说明在 Perl 源发行版随附的 INSTALL 文件中 - 配置选项是 -Uusedl,或者您可以在交互式配置中进行设置。
    【解决方案2】:

    或者您可以使用 Expect,它是一种用于与输入/输出交互的脚本语言。 http://en.wikipedia.org/wiki/Expect

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 2014-10-17
      • 1970-01-01
      • 2015-03-29
      • 2016-03-25
      • 2023-04-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      相关资源
      最近更新 更多