2011-06-02 121 views

回答

3

雖然我基本上同意eduffy,但我通常會將這些函數放在用戶主目錄中的文件中,或者如果腳本在用戶路徑中的目錄中的用戶之間共享。然後,我將在.bash_profile中生成文件(。〜/ FILE或。$(type -p FILE))。這允許您在必要時(如果需要更改內容)重新輸入文件,而無需重新登錄等。

+0

是的,這很好。謝謝。 – grok12 2011-06-02 18:25:14

+2

但是任何讀者都需要意識到你必須導出這樣的函數名:export -f funcname。 – grok12 2011-06-07 04:49:39

+0

導出對於源文件通常是可選的,因爲它們在執行它們的環境中執行。在FILE中定義的所有東西都可以在用戶的​​shell中用於後續腳本(除非未設置)。如果要在執行父shell期間使子變量對變量(或函數)可見,則需要導出。 – Jay 2014-03-20 17:31:58

1

將其放入您的~/.bashrc~/.bash_profile

+0

.bash_profile是隻能由登錄shell獲取,所以.bashrc是co正確的地方功能和別名。它與從父級傳遞給子進程的環境變量不同。 – cababunga 2011-06-02 17:59:58

+0

我已經在兩個文件中嘗試過它,並打開了新的終端窗口,但它也不能工作。我試圖從.bashrc中導出它,但這也沒有幫助。 – grok12 2011-06-02 18:08:59

+0

然而,「compgen -A功能」可以找到它。 – grok12 2011-06-02 18:11:40

3

在bash中,您可以從腳本(包含函數的文件作爲參數)運行source並簡單地調用該函數。這是在您的.bashrc文件中定義函數時隱式發生的情況。

+0

是的,簡短的回答:用'source'或者單點'.'命令導入腳本 – 2016-02-21 02:29:08

0

將您的「常用」功能放在單獨的腳本中(讓我們打電話給我們這 「一」):

#!/bin/bash 

test_fun() { 
    echo "hi" 
} 

下, 「進口」 到另一個腳本(比如, 「b」):

#!/bin/bash 

. ./a 

test_fun 

運行bash b將輸出 「喜」

+0

這不適合我。但是,正如本答案所述,執行'source ../ a'工作。 http://stackoverflow.com/a/1016415/16524 – Fostah 2013-07-10 20:18:35