我的問題是各種this question和this question的組合。我想安裝在其使用sudo權限路徑中有空格的文件時,如:帶有sudo和文件路徑空間的Java exec mount
sudo mount /path/to/mount/point /dir\\ with/spaces\\ in\\ name
如果有在路徑中沒有空格,我可以做到這一點,因爲這個用戶有mount命令sudo的權限:
Runtime.exec("sudo mount /path/to/mount/point /dir/without/spaces");
但也有空間,所以我嘗試:
Runtime.exec("sudo mount /path/to/mount/point /dir\\ with/spaces\\ in\\ name");
這給了我 「無法識別的ARG '\'」 什麼的,從安裝這種效果。用單引號或雙引號包圍路徑名稱也不起作用。
然後我嘗試:
因爲須藤要輸入密碼的一些方法Runtime.exec("sudo", "mount", "/path/to/mount/point", "/dir with/spaces in name");
這當然是失敗了,即使我通常不需要輸入密碼sudo的安裝。 Faaantastic。
這看起來像是一個catch-22給我。如果我使用單個String方法,我可以使用sudo工作,或者如果使用String數組方法,我可以使用路徑名工作。我如何獲得這兩個工作?
感謝您的回答。對不起,我昨天急着忘了逃避我的反斜槓:這不是我遇到的問題。我已經嘗試過使用單個,雙個甚至三個反斜槓(用Java語言表示的「\\」,「\\\\」和「\\\\\」)的每一個組合,但不幸的是這些工作都沒有。 Sudo也必須留在那裏,因爲我從這個帳戶運行的帳戶具有sudo許可權,但不是經常許可,我無法控制這一點。我知道這是一組非常特殊的限制條件。 –
你想'sudo'而不提供用戶密碼? – user2622016
基本上我需要一個解決方案,它既允許帶空格的路徑,又不需要我提供密碼。我已經在/ etc/sudoers中爲此帳戶使用NOPASSWD設置了mount命令。 –