我在我的 中定义了一些函数.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 会话中可用。