web-dev-qa-db-ja.com

hostsファイルに行を追加し、Sudoを使用するとアクセス権が拒否される-Mac

端末で1行のコマンドを実行して、Macのhostsファイルに行を追加しようとしています。

これはSudoを使用すると簡単だと思いましたが、>>をホストファイルに追加しようとすると「許可が拒否されました」を返しますが、>のホストの内容を置き換えようとすると機能します。

Sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$

Sudo echo test > /etc/hosts
Password:
$ 

OSは最新です。

14
Mint

これは、echoがrootとして実行されているためですが、実際にリダイレクトを実行しているのはシェルです。これを機能させるには、新しいシェルを生成する必要があります。

Sudo -- sh -c "echo test >> /etc/hosts"

編集:>リダイレクトが機能するという事実を見たことはありません。説明できません。

17

例ではエコーが実行されているため、rootではなく現在のユーザーとして実行されるリダイレクトを介してエコーを実行するのではなく、 tee as Steve Buzonas suggests を使用します。

 echo 'test' | Sudo tee -a /etc/hosts

Sudoがteeコマンドに適用されました。 '-a'はファイルに追加します

これにより、ティーも標準出力に出力されます。端末に「test」を表示したくない場合は、次の行も追加してください:> /dev/nullをその行の最後に追加します。

9
user2926534

新しい行が最初に作成されたことを確認するために、私はこれを使用しました:

Sudo -- sh -c "echo  \ \ >> /etc/hosts";Sudo -- sh -c "echo 127.0.0.1  testdomain.com >> /etc/hosts"
1
blizzrdof77