1. ホーム
  2. bash

[解決済み] sudo cat は Permission denied になるのに sudo vim は正常に動作するのはなぜですか?重複] [重複

2023-02-06 01:30:18

質問

私は自分のアーチの pacman.conf ファイルにリポジトリのソースを追加するのを自動化しようとしています。 echo コマンドを使っています。 しかし、それは次のように失敗します:-)

sudo echo "[archlinuxfr]" >> /etc/pacman.conf
sudo echo "Server = http://repo.archlinux.fr/\$arch" >> /etc/pacman.conf
sudo echo " " >> /etc/pacman.conf

-bash: /etc/pacman.conf: Permission denied

vim を使って手動で /etc/pacman.conf を変更する場合、次のようにします。

sudo vim /etc/pacman.conf

でvimを終了させ :wq で終了すると、すべてうまくいき、pacman.conf は "Permission denied" の苦情もなく手動で更新されました。

なぜそうなるのでしょうか?そしてどうしたら sudo echo を動作させるにはどうしたらよいのでしょうか?(btw, 私は sudo cat も使ってみましたが、同様にPermission deniedで失敗しました)

どのように解決するのですか?

問題は、リダイレクトが元のシェルで処理されていることです。 sudo . シェルは心を読むことができないので、その特定の >> のためのものであることを知りません。 sudo を意味し、それに対するものではありません。

する必要がある。

  1. はリダイレクトを引用します。 sudo)
  2. そして 使用 sudo -s (そのため sudo は引用されたリダイレクトを処理するためにシェルを使用します)。