fakeroot를 통해 변수 및 함수 전달

fakeroot를 통해 변수 및 함수 전달

프로젝트에서 fakeroot를 사용하고 싶은데 프로젝트에 fakeroot에 전달해야 하는 함수와 변수가 많습니다.

#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

fakeroot -- bash -c testFunction

하지만 실행되지 않거나 testFunction에코 되지 않습니다.myVar

답변1

bash내보내기 기능 기능을 사용할 수도 있습니다 . 하지만 스크립트 fakeroot이기 때문에 그런 환경에서 이러한 변수를 제거 하지 않는 sh시스템에서 구현해야 합니다 . 이런 일이 발생하지 않도록 하려면 인터프리터 자체 로 해석 하면 됩니다 .shBASH_FUNC_fname%%dashfakerootbashbash -o posixsh

#!/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있도록 하려면 내보내야 합니다 . 동시에 및 를 모두 호출하는 대신 선언하기 전에 를 내보낼 수도 있습니다 .bashfakerootexportmyVartestFunctionset -o allexport

답변2

좋아, 알아냈어:

#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

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

관련 정보