我必须运行此命令sudo sh -c "echo 'nameserver 8.8.8.8' >> /etc/resolv.conf"才能nameserver 8.8.8.8在/etc/resolv.conf文件中附加一行。我知道,只有通过子外壳才有可能。
我的问题:
在子shell中不运行命令是否有可能?
在哪些情况下,应该在子 shell 中运行命令?
sudo echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
失败,因为它为echo命令(不需要它)提供了提升的权限,而不是>>重定向(这样做,因为目标文件归 root 所有)。包装整个命令序列sudo sh克服了这一点。
你也可以这样做
echo 'nameserver 8.8.8.8' | sudo tee -a /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)