大家都知道,在命令行上直接定義shell函數(shù)的明顯缺點是退出shell時,函數(shù)就消失了。對于復(fù)雜的函數(shù)來說,這可是個麻煩事。
不過南昌網(wǎng)絡(luò)公司小編可以告訴大家一個非常簡單的方法,那就是將函數(shù)定義在一個特定的位置,這個位置在每次啟動一個新shell的時候,都會由shell重新載入。較佳的地點就是在.bashrc文件。bash shell在每次啟動時都會在主目錄下查找這個文件,不管是交互式shell還是從現(xiàn)有shell中啟動的新shell。下面小編就來為大家具體介紹一下:
1、直接定義函數(shù)
可以直接在主目錄下的.bashrc文件中定義函數(shù)。許多Linux發(fā)行版已經(jīng)在.bashrc文件中定義了一些東西,所以注意不要誤刪了。把你寫的函數(shù)放在文件末尾就行了。
$ cat .bashrc
# .bashrc
# Source global definitions
if [ -r /etc/bashrc ]; then
. /etc/bashrc
fi
function addem {
echo $[ $1 + $2 ]
}
$
該函數(shù)會在下次啟動新bash shell時生效。隨后你就能在系統(tǒng)上任意地方使用這個函數(shù)了。
2、讀取函數(shù)文件
只要是在shell腳本中,都可以用source命令(或者它的別名點操作符)將庫文件中的函數(shù)添加到你的.bashrc腳本中。
$ cat .bashrc
# .bashrc
# Source global definitions
if [ -r /etc/bashrc ]; then
. /etc/bashrc
fi
. /home/rich/libraries/myfuncs
$
要確保庫文件的路徑名正確,以便bash shell能夠找到該文件。下次啟動shell時,庫中的所有函數(shù)都可在命令行界面下使用了。
$ addem 10 5
15
$ multem 10 5
50
$ divem 10 5
2
$
更好的是,shell還會將定義好的函數(shù)傳給子shell進(jìn)程,這樣一來,這些函數(shù)就自動能夠用于該shell會話中的任何shell腳本了。你可以寫個腳本,試試在不定義或使用source的情況下,直接使用這些函數(shù)。
$ cat test15
#!/bin/bash
# using a function defined in the .bashrc file
value1=10
value2=5
result1=$(addem $value1 $value2)
result2=$(multem $value1 $value2)
result3=$(divem $value1 $value2)
echo "The result of adding them is: $result1"
echo "The result of multiplying them is: $result2"
echo "The result of dividing them is: $result3"
$
$ ./test15
The result of adding them is: 15
The result of multiplying them is: 50
The result of dividing them is: 2
$
甚至都不用對庫文件使用source,這些函數(shù)就可以完美地運行在shell腳本中。是不是很神奇呢?小編認(rèn)為更多的還是方便。
好了,關(guān)于在.bashrc 文件中定義函數(shù)的做法,南昌網(wǎng)絡(luò)公司小編就先為大家講到這里,如果還有那些不明白的地方,可隨時來電和我們聯(lián)系。此外,如有想了解更多關(guān)于南昌網(wǎng)站制作、微信開發(fā)、APP開發(fā)等方面的資訊,歡迎關(guān)注百恒網(wǎng)絡(luò)官網(wǎng),更多相關(guān)知識與您分享!