2016-09-16 64 views
0

如果我在bash腳本定義的函數,例如,envsetup.sh過時的功能保持在bash環境

function blabla() 
{ 
    echo "blabla" 
} 

然後我通過

. envsetup.sh

來源它有布拉布拉功能我的環境使用。但是,如果我刪除此函數並再次獲取它,那麼blabla函數仍然存在。

爲什麼它不被刪除?

+0

檢查採購的腳本是什麼意思... –

回答

1

它仍然是相同 Bash進程,並運行您的envsetup.sh只是簡單地修改該進程。如果你調用了一個新的Bash shell並且在那裏運行你的腳本,那麼你的函數就不存在了。

你可以在你的shell腳本思想中刪除那個函數。您可以通過這樣做:

unset -f blabla 
+0

是有可能的地方添加這樣的命令,所以每次當我運行envsetup.sh,我第一重置所有功能,再加入他們呢? – pepero

+2

最好的地方是'envsetup.sh'本身,這樣它就可以清理它之前定義過的函數。然而,長遠來看,'envsetup.sh'將主要在乾淨的環境中執行一次,而不是經歷多個編輯/源代碼週期的環境。 – chepner