导出函数名称

导出函数名称

我在我的 中定义了一些函数.bashrc。我需要一些关于使用命令的建议

export -f func_name

何时需要导出函数?

答案1

出于与导出变量相同的原因,需要导出函数 - 即,使函数定义在子进程中可见(具体来说,在子 bash shell- 与变量的情况不同,其他进程(甚至其他 shell 进程)不会识别导出的 bash 函数)。例如:

$ declare -p -f foo
foo ()
{
    echo 'I am foo'
}
$ bash -c 'foo'
bash: line 1: foo: command not found

$ export -f foo
$ bash -c 'foo'
I am foo

当然,任何获取定义该函数的文件的 shell(例如,当该函数在 ~/.bashrc 文件中定义时,交互式非登录 shell)都不需要依赖于从其父级继承它

$ declare -n -f foo        # "unexport" the function

$ declare -f -p foo >> ~/.bashrc
$ bash -c 'foo'
bash: line 1: foo: command not found

$ bash -ic 'foo'
I am foo

答案2

这里对该主题进行了很好的讨论:https://unix.stackexchange.com/questions/22796/can-i-export-functions-in-bash

简而言之,我想说您不需要从 .bashrc 导出任何函数,因为它无论如何都是来源,因此这些函数将立即在您所有的 bash 会话中可用。

相关内容