12 次の2つの実行の出力が異なるのはなぜですか?(最終的なコマンドの変数には二重引用符が必要です) $ sudo su -c "echo `cat /root/root_file`" cat: /root/root_file: Permission denied $ sudo su -c 'echo `cat /root/root_file`' Yay, highly classified content! bash permissions sudo bash-scripting — アンビデックス ソース
19 Bashは、コマンドが実行される前に一連の展開を 実行します(この場合)。最初のケースでは、コマンドの置換は二重引用符で囲まれているため実行されます-それはあなたのように実行されるため、エラーになります。2番目のケースでは、単一引用符が展開を妨げるため、ルートのシェルが実行されるまでバックティックは置換されません。sudo https://www.gnu.org/software/bash/manual/bashref.html#Quotingも参照してください — グレン・ジャックマン ソース
6 最初の例では、バックルートはシェルによって(ルートではなくユーザーとして)評価されます。で試す sudo su -c "echo `whoami`" 単一引用符で囲まれた2番目の'文字列でecho `cat /root/root_file`は、文字列全体がルートシェルに渡されます。 — マッテオ ソース