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コマンドを実行すると、エイリアスや機能を実行できません。エイリアスはシェルの機能です。したがって、エイリアスを実行するには、まずルートシェルを起動する必要があります。

おすすめ記事