通过 fakeroot 传递变量和函数

通过 fakeroot 传递变量和函数

我想在一个项目中使用 fakeroot,但是该项目有很多我需要传递给 fakeroot 的函数和变量。

#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

fakeroot -- bash -c testFunction

但它没有运行testFunction或回显myVar

答案1

您还可以使用 的bash导出函数功能。但是,鉴于这fakeroot是一个sh脚本,您需要在一个系统上实现sh不会BASH_FUNC_fname%%像那样从环境中删除这些变量dash。为了确保它不会发生,您可以将其本身fakeroot解释bashbash -o posix解释sh器。

#!/bin/bash -
myVar="foo"

testFunction() {
    printf '%s\n' "$myVar"
}

export myVar
export -f testFunction

fakeroot=$(command -v fakeroot)
bash -o posix -- "${fakeroot:?fakeroot not found}" -- bash -c testFunction

请注意,您还需要导出myVar才能供bash启动的人使用fakeroot。您也可以在声明它们之前发出 a ,而不是export同时调用myVar和。testFunctionset -o allexport

答案2

好吧,我想通了:

#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

tmp_function=$(declare -f testFunction)
fakeroot -- bash -c "$tmp_function; testFunction"

相关内容