2016-01-26 126 views
0

我使用joey hess'myrepos工具來管理多個回購。將環境變量傳遞給myrepos(mr)

在某些時候,我想將環境變量傳遞給動作和段,以便它們得到擴展。特別是,我傳遞的內容如$SYNCTL,它應該指向安裝存儲庫的頂級目錄。

(請注意,這有什麼做的頂級目錄由myrepos refered到:這就是頂級目錄上面這一切都應該被忽略,這是不同的)

不幸的是,這些變量沒有擴大。

舉例來說,如果我出口SYNCTL=/home/myuser,然後定義回購:

[$SYNCTL/myrepo] 

.mrconfig

是從來沒有真正發現。 $SYNCTL被擴展爲空,導致myrepos尋找/myrepo,顯然不存在,所以myrepos只是忽略該部分。

我也試圖擴大可變回購部分裏面,像這樣:

[myrepo] 
status = echo $SYNCTL 

但是,這並不無論是打印出任何東西。在這種情況下,會發現回購,但會打印空白行。

有一些可以擴展的變量(如HOME),但並非所有變量都可以工作。我認爲這與--force-env有關,但運行mr --force-env status也不打印任何東西。

有沒有辦法解決這個問題?應該有嗎?

+1

我真的不知道關於myrepos的任何信息,但「找到了回購,但空白行被打印」聽起來像'SYNCTL'沒有正確導出。你可以仔細檢查一下(例如用'env | grep SYNCTL',假設它實際上是'env'程序,而不是你的shell內置的shell),它可以被導出,而不僅僅是在你的shell中定義的本地? –

+0

就這麼簡單。謝謝! –

回答

2

確保您導出SYNCTL環境變量。例如,在bash -alikes,而不是

SYNCTL=$HOME/reponame 

其中僅定義了一個殼局部變量,使用

export SYNCTL=$HOME/reponame 

使將由產生的進程被繼承的環境變量。

相關問題