2011-06-02 47 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