用sudo cat追加文件出錯

今天在輸入下面一條命令時產生的這個問題:

 

sudo cat hosts.patch >> /etc/hosts

 

 系統提示Permission Denied:

-bash: /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的執行過程的知識,我需要去惡補一下了…………

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章