2017-07-17 59 views
0

我在Windows上運行Cygwin的bash。我想在另一個目錄下運行一個可執行程序,但如果目錄名稱包含空格,則似乎存在問題。我可以從自己的目錄(C:/ SomeUser的/ myPrograms /項目名稱用空格/)運行exe沒有問題,如何在bash中運行可執行文件,如果名稱有空格?

./myFile.exe 

但是,如果我在其他目錄(/ cygdrive/C),並嘗試運行帶有完整路徑的可執行文件,它似乎並不即使我雙引號來處理空間的名稱。如果我更換./與ls一起工作,

./"C:/someUser/myPrograms/Project Name With Spaces/myfile.exe" 
-bash: ./C:someUser/myPrograms/Project Name With Spaces/myfile.exe: No such file or directory 

它有沒有問題,找到可執行文件,所以我知道我輸入了正確的路徑名。

是否有另一種方式來運行可以處理全名與空格的可執行文件?

+2

其中的 「./」 通常指的是當前目錄。你在哪個目錄?從路徑和文件擴展名,它看起來像你在Windows上運行。你用什麼來運行bash?例如Cygwin的? 「Git Bash在這裏」? – DarthPablo

+2

如果你想知道你的'bash'實現/仿真的最佳實踐,應該回答上面的評論。一般來說,無論是理解windows路徑還是接受它們作爲命令,你只需要刪除前面的'。/'(例如:'git-bash'),否則你就不應該使用更習慣的方式來解決你的可執行文件(例如:'Cygwin',它通常理解引用的Windows路徑,但拒絕接受它們作爲命令)。還有其他多種實現方式,因此通用答案不易生成。 – Aaron

+0

謝謝,我沒有意識到實現會有所不同!我編輯了這個問題,以反映我從Cygwin運行它。 – KAE

回答

1

對於Cygwin的,你想的

"/cygdrive/c/someUser/myPrograms/Project Name With Spaces/myfile.exe" 
/cygdrive/c/someUser/myPrograms/Project\ Name\ With\ Spaces/myfile.exe 
"$(cygpath -u "C:\someUser\myPrograms\Project Name With Spaces\myfile.exe")" 
+0

這兩個工作,謝謝。 [對不起,我最初沒有指定Cygwin:我認爲其他答案很可能是'真正的'bash實現]。 – KAE

2

你需要引用它:

'some cmd' 

最好確保你的可執行文件名和路徑,它包含空格。


但這裏的問題是你誤解了.這意味着當前目錄。由於您正在運行的路徑是而不是當前文件夾的子文件夾 - 刪除前面的./

1

您可以使用轉義,對於空間:'\ '

相關問題