![定义并导出一个函数,无需重复自己](https://linux22.com/image/164243/%E5%AE%9A%E4%B9%89%E5%B9%B6%E5%AF%BC%E5%87%BA%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%EF%BC%8C%E6%97%A0%E9%9C%80%E9%87%8D%E5%A4%8D%E8%87%AA%E5%B7%B1.png)
我知道我可以这样做:
function foo() { echo "foo"; }; export -f foo
但是我可以在不重复函数名称的情况下做到这一点吗?
答案1
set -a # or: set -o allexport
# will be exported:
foo () {
echo foo
}
set +a # or: set +o allexport
# will not be exported:
bar () {
echo bar
}
设置allexport
shell 选项bash
将导出您在设置该选项时定义的所有函数。您可以为需要它的文件部分设置此选项,然后取消设置。
请注意,这也会影响已定义的变量(它们会自动转换为环境变量),但不会影响函数定义内的变量。