2017-09-03 105 views
-2

Golang execute cd command for CMD不同,我只是想使用golang運行cd directory_location並更改當前目錄。如何更改當前目錄中的棋子

因此,例如,

說我在〜/ goproject,我跑,./main在終端,我想在〜/ goproject2終端。

我試圖

cmd := exec.Command("bash", "-c", "cd", "~/goproject2") 
cmd.Run() 

但這實際上並沒有改變當前目錄。

+4

https://golang.org/pkg/os/#Chdir –

+3

您不能從應用程序更改shell的cwd。 –

+0

@CeriseLimón有沒有辦法?即使是複雜的想法也會有用 –

回答

2

你想要os.Chdir。此功能將更改應用程序工作目錄。如果您需要更改外殼工作目錄,最好的方法是查看cd的工作原理和工作原理。

當你發現,你不能使用cd從應用程序中更改當前目錄,但os.Chdir沒有必要爲它工作:)

用法示例:

home := os.Getenv("HOME") 
err := os.Chdir(home+"/goproject2") 
if err != nil { 
    panic(err) 
} 
+0

在我運行go程序後,這似乎並沒有改變終端的位置。當我打印錯誤時,我發現'os.Chdir()'沒有錯誤。我發現錯誤是''。 –

+2

當然,它不會改變終端位置。改變終端的位置要複雜得多。您仍然無法使用'cd',並且Go標準庫中沒有任何內容可以幫助您。你最好的選擇是查看'cd'的源代碼,並從那裏開始向後工作。 –

+0

感謝您的輸入。我會盡力找到解決辦法。 –

1

你還沒有明確說明你爲什麼要改變目錄,如果沒有上下文,這很難回答。但通常如果你需要一個命令,從一個特定的目錄中運行,您可以指定用作命令Dir屬性,如:

cmd := exec.Command("myCommand", "arg1", "arg2") 
cmd.Dir = "/path/to/work/dir" 
cmd.Run() 

如果這不是你的意思,請澄清。