sudo에서 여러 쉘 함수를 호출하는 방법은 무엇입니까?

sudo에서 여러 쉘 함수를 호출하는 방법은 무엇입니까?

간단한 별칭과 더 복잡한 작업을 위한 추가 기능이 포함되어 ~/.bashrc있거나 제공되는 거대한 별칭 파일이 있습니다 .~/.zshrc

# example aliases
alias "sudo=sudo "
alias "testalias=echo 'Aliases work as expected'"

# example function
testfunction(){
    echo "Function $1 works as expected"
}

다음 명령을 사용하거나 사용하지 않고 이 명령을 실행하면 이런 일이 발생합니다 sudo.

> testalias
Aliases work as expected

> testfunction "test"
Function test works as expected

> sudo testalias
Aliases work as expected

> sudo testfunction "test"
sudo: testfunction: command not found

나도 별 차이 없어 보여

  • export -f testfunction && sudo -E testfunction "test"
  • alias "testfunction-alias=testfunction" && sudo -E testfunction-alias "test"

sudo별칭을 사용한 것처럼 함수를 어떻게 호출할 수 있나요 ?
별칭이 너무 많기 때문에 각각에 대한 별칭을 내보내거나 만들 필요가 없을 수도 있습니다.

답변1

sudo명령을 실행하면 별칭이나 기능을 실행할 수 없습니다. 별칭은 쉘의 기능입니다. 따라서 별칭을 실행하려면 먼저 루트 셸을 시작해야 합니다.

관련 정보