我是一个学习狂欢。 在bash手册中,我找到了关于功能的文件
可以导出功能以便自动转换子设备 使用
-f
内置的export
选项定义它们。
在我的bash中,它导出与shell变量相反的函数定义。但bash手册使用word,“可能会导出”。函数定义是否总是以bash格式导出,还是应该做些什么来保证它的输出?
答案 0 :(得分:2)
Functions may be exported ... with the -f option to the export builtin.
这消除了所有的绒毛。它应该更清楚地说明它想说什么。
以防它仍然不是......
export -f <funcname>
答案 1 :(得分:1)
是否导出某个(变量或函数)确定是否将其传递给子进程。对于shell函数,只有当子进程碰巧是另一个shell时,这才真正重要。这是一个例子:
$ exportedfunc() { echo "This is the exported function"; }
$ export -f exportedfunc
$ nonexportedfunc() { echo "This is the non-exported function"; }
$ bash # create a subshell to see which functions it inherits
$ PS1='\$\$ ' # set a different prompt so we can tell the subshell ($$) from the parent shell ($)
$$ exportedfunc # This'll work, because the parent shell exported the function
This is the exported function
$$ nonexportedfunc # This won't work because this function was not exported to subprocesses
bash: nonexportedfunc: command not found
$$ exit # back to the parent shell, where both functions are defined
$ exportedfunc
This is the exported function
$ nonexportedfunc
This is the non-exported function
我不知道任何会导致所有功能自动导出的shell设置。虽然如果你隐式地创建一个子shell(例如通过在括号中放入一些命令),它将继承所有是否导出。