如何正确调用.bashrc的函数?

.bashrc中有下面的几句。

var="xxx"
fun1(){
    echo $var
}
export -f fun1

从test.sh调用.bashrc中的fun1函数出现问题,无法获得var的值。
我改写了

fun1(){
    var="xxx"
    echo $var
}
export -f fun1

可以从test.sh 调用fun1了。

存在两个问题:
1.var="xxx"需要被其他的.bashrc中的函数调用,许多多写几个var="xxx"
2.export -f fun1
如果有10个函数都希望被其他脚本从.bashrc中调用,就写10个 export -f funm?

这两个问题,如何妥善解决?

阅读 3.7k
2 个回答

将共用的变量和函数存放到一个独立的文件中,需要调用时引入它便可。

比如,下面是共用文件 common.source 的内容

author="李毅"

function print_name() {
    echo "name: $1"
}

假定在 a.sh 文件中需要调用 foo(),可以这样写

#!/bin/bash
source common.source
print_name $author

问题1:
如果要在其他脚本中读取 $var,将其 export 即可,不用写在函数里。

问题2:
我想你的意思应该是“.bashrc 中有10个函数都需要被其他脚本调用”。答案是,你不需要写10个 export,甚至 $var 你都不用 export 。把 set -a 加到需要 export 的变量和函数前面就行了, 之后的变量赋值和函数定义都会被自动 export 。

-a Each variable or function that is created or modified is given the export attribute and marked for export to the environment of subsequent commands.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进