我尝试通过在终端上执行一行命令来向 Mac 上的 hosts 文件中添加一行。
我以为使用 sudo 会很容易,但是当我尝试添加>>
到 hosts 文件时,它返回“权限被拒绝”,但如果我尝试替换>
hosts 内容,它就会起作用。
sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$
sudo echo test > /etc/hosts
Password:
$
操作系统是最新的。
答案1
这是因为echo
以 root 身份运行,但实际执行重定向的是 shell。您需要生成一个新的 shell 才能使其工作:
sudo -- sh -c "echo test >> /etc/hosts"
编辑:我还没有看到重定向起作用的事实>
;我无法解释这一点。
答案2
答案3
通过脚本也可以很好地工作:
sudo /bin/sh -c 'echo "127.0.0.1 mydomain" >> /etc/hosts'
答案4
为了确保首先创建新行,我使用了这个:
sudo -- sh -c "echo \ \ >> /etc/hosts";sudo -- sh -c "echo 127.0.0.1 testdomain.com >> /etc/hosts"