在shell環(huán)境中,如果直接使用sudo命令將結(jié)果通過(guò)管道寫(xiě)入文件,會(huì)發(fā)生權(quán)限問(wèn)題。例如
sudo echo "JAVA_HOME=/usr/local/jre" >> /etc/profile
其中,/etc/profile的權(quán)限是644,發(fā)生權(quán)限不足的報(bào)錯(cuò)。
這可能是由于sudo只針對(duì)執(zhí)行命令權(quán)限,并沒(méi)有針對(duì)寫(xiě)入文件權(quán)限。我們需要用bash -c方式包裝整個(gè)命令執(zhí)行(注意雙引號(hào)的轉(zhuǎn)義)
sudo bash -c "echo \"JAVA_HOME=/usr/local/jre\" >> /etc/profile"
另一種方法是采用tee命令
sudo echo "JAVA_HOME=/usr/local/jre" | sudo tee -a /etc/profile > /dev/null