我有從 php 執行的這一行
sudo -u db2inst1 -s -- "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
它在 Sudo 版本上運行良好1.7.2。
現在我有了新的伺服器SUSE Linux Enterprise Server 11 (x86_64)
。沒有 sudo 所以我從存儲庫安裝了它(Sudo 版本1.6.9p17) 但要知道上面的文法不起作用。它拋出bin/bash: /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'": No such file or directory
知道我怎麼能做到這一點嗎?
如果我/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"
在 db2inst1 帳戶下運行,一切都會正常。
答案1
我真的不太確定你為什麼會收到這個錯誤。我有一個帶有 sudo 1.8.3 的系統,文件明確指出應該sudo -s "echo hi"
可以工作,但事實並非如此。
我一直這樣做的方式是做同樣的事情-s [command]
,但手動。
sudo sh -c 'echo hi'
或者在你的情況下
sudo -u db2inst1 sh -c "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
它更相容,因為-s
爭論並不總是存在(不幸的是我有一些非常舊的機器在工作)。
編輯:
您收到的錯誤中發生的情況是,它正在尋找一個可執行文件,該可執行文件的字面名稱是db2 "update EDU.contact set MOBILE_PHONE = '123'"
在名為的目錄中/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin
(是的,它尋找db2 connect to PLC;
一個目錄)。這顯然不存在。