今天在輸入下面一條命令時產生的這個問題:
sudo cat hosts.patch >> /etc/hosts
系統提示Permission Denied:
產生這個問題的過程是這樣的:
這個命令被分解爲兩步先後執行,首先會執行
sudo cat hosts.patch
# 這一條命令是具有sudo權限的,也就是以root身份執行的
根據後面的 >> /etc/hosts,得到輸出後shell需要把它重定向到hosts文件裏,
但是這個過程並沒有sudo的支撐,當讓就不能打開hosts文件,把內容添加進去。(hosts文件需要root來操作)
所以就會出現Permission Denied錯誤。
要解決這個問題,是需要把整個“cat hosts.patch >> /etc/hosts”都用sudo來執行就行,
比如說:sudo sh -c "cat hosts.patch >> /etc/hosts"
或者:echo "cat hosts.patch >> /etc/hosts" | sudo sh
這裏有涉及到了有關shell的執行過程的知識,我需要去惡補一下了…………