鍍金池/ 問答/Linux/ 如何正確調(diào)用.bashrc的函數(shù)?

如何正確調(diào)用.bashrc的函數(shù)?

.bashrc中有下面的幾句。

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

從test.sh調(diào)用.bashrc中的fun1函數(shù)出現(xiàn)問題,無法獲得var的值。
我改寫了

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

可以從test.sh 調(diào)用fun1了。

存在兩個問題:
1.var="xxx"需要被其他的.bashrc中的函數(shù)調(diào)用,許多多寫幾個var="xxx"
2.export -f fun1
如果有10個函數(shù)都希望被其他腳本從.bashrc中調(diào)用,就寫10個 export -f funm?

這兩個問題,如何妥善解決?

回答
編輯回答
疚幼

將共用的變量和函數(shù)存放到一個獨立的文件中,需要調(diào)用時引入它便可。

比如,下面是共用文件 common.source 的內(nèi)容

author="李毅"

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

假定在 a.sh 文件中需要調(diào)用 foo(),可以這樣寫

#!/bin/bash
source common.source
print_name $author
2018年8月10日 05:20
編輯回答
夢若殤

問題1:
如果要在其他腳本中讀取 $var,將其 export 即可,不用寫在函數(shù)里。

問題2:
我想你的意思應(yīng)該是“.bashrc 中有10個函數(shù)都需要被其他腳本調(diào)用”。答案是,你不需要寫10個 export,甚至 $var 你都不用 export 。把 set -a 加到需要 export 的變量和函數(shù)前面就行了, 之后的變量賦值和函數(shù)定義都會被自動 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.
2018年2月6日 14:10