vag*_*ant 2 linux bash shell chroot
在bash中,将函数传递给主机chroot的理想方法是什么?
例如,
install_script () {
wget some_source_files && configure && make && make install
}
Run Code Online (Sandbox Code Playgroud)
和,
some_command -v foo >/dev/null 2>&1 || install_script
Run Code Online (Sandbox Code Playgroud)
但如果我想从主机执行同样的操作,我该怎么做呢?
我能想到的一种方法是将函数传递给chrooted目录中的文件,
cat > $chrooted_dir/etc/install_script.sh <<"EOF"
#!/bin/bash
wget source_files ; ./configure ; make ; make install
EOF
Run Code Online (Sandbox Code Playgroud)
并从主机执行,
chroot $chrooted_dir /bin/bash "check_command || /etc/install_script.sh"
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更优雅的方式来解决这个问题?理想情况下,我想从主机中的cript执行命令,并在chroot系统内执行一些安装.
PS:我也很欣赏任何相关的源/链接来理解bash句柄函数声明和随后对chrooting的继承.
您可以导出函数并在继承shell中执行它们:
install_func () {
wget some_source_files && configure && make && make install
}
export -f install_func
chroot "$chrooted_dir" /bin/bash -c "install_func"
Run Code Online (Sandbox Code Playgroud)
该函数将变为带有名称的环境变量,该变量BASH_FUNC_install_func%%将被chrooted bash作为函数继承和重新解释.
| 归档时间: |
|
| 查看次数: |
1831 次 |
| 最近记录: |