2015-03-19 25 views
0

我試圖僞造一個sudo的程序,需要真正的超級用戶口令:假sudo的腳本無法正常運行

#!/bin/sh 

su -c "'$*'" 

它,當我做

sudo yum 

但是當我做

不起作用工程
sudo yum upgrade 

或任何有參數的命令。 Bash抱怨

bash: yum upgrade command not found 

爲什麼會發生這種情況?

回答

1

您引用不正確。這是您實際上想要"$*"而不是"[email protected]"的罕見情況。但你絕對不想"'$*'"

+0

$ @和$ *有什麼區別?爲什麼不能添加單引號?因爲我總是做** su -c'yum升級'** – texasbruce 2015-03-19 07:07:54

+1

使用$ @會給出不同的單詞,所以如果你用參數'yum upgrade'調用sript,'su -c「$ @」'相當於'sudo -c「yum」「upgrade」',但'su -c「$ *」'與'su -c「yum upgrade」'相同。如果使用單引號,則相當於'su -c''yum upgrade'「',因此不是使用參數'upgrade'運行命令」yum「,su會查找名爲'yum upgrade'的命令並且找不到它。 – 2015-03-19 07:11:05

+0

感謝您的解釋!有時候殼牌有點混淆...... – texasbruce 2015-03-19 07:15:06