重複の可能性:
stdoutを書き込み権限のないファイルにリダイレクトする
echo "some words" >> /etc/apt/source.list
permission denied
sudo echo "some words" >> /etc/apt/source.list
返品許可も拒否されました
次に、append演算子は別のコマンドだと思います。その前にsudoを置く必要があるので、試してみます
echo "some words" >> sudo /etc/apt/source.list
返品許可も拒否されました
このタスクをどのように行う必要がありますか?
承認された回答:
sudo sh -c 'echo "some words" >> /etc/apt/source.list'
sudo echo“ some words”>> /etc/apt/source.listが機能しない理由は、sudoがリダイレクトではなく、「echo」コマンドの特権を上げているためです。
>>リダイレクトにより、現在のシェルがファイルを作成/追加します。シェルにそうする権限がないため、失敗します。
私の答えが機能する理由は、sudoされた新しいシェルですべて(エコーとリダイレクト)を実行しているためです。 sh -c ...
新しいシェルを呼び出し、そのサブシェルで指定されたコマンドを実行します。そのサブシェルを昇格された特権で実行する前のsudo。
2番目のsudoの例は意味がありません。なぜなら、sudoは実行するコマンドを受け取り、それはあなたが渡しているものではないからです。ローカルディレクトリにsudoというファイルがあり、その内容は「いくつかの単語」であるに違いありません。自由に削除してください🙂