.bashrc
केवल इंटरैक्टिव गोले द्वारा पढ़ा जाता है। (वास्तव में, यह एक अधिक महत्व है: इस संबंध में बैश विचित्र है। बैश यह नहीं पढ़ता है .bashrc
कि यह एक लॉगिन शेल है, इंटरएक्टिव है या नहीं। और अपवाद के अलावा भी एक अपवाद है: यदि बैश की मूल प्रक्रिया है rshd
या sshd
, तो बैश पढ़ा नहीं जा सकता है .bashrc
) इंटरएक्टिव है या नहीं।)
किसी ज्ञात स्थान पर किसी फ़ाइल में अपनी फ़ंक्शन परिभाषाएँ रखें, और उस फ़ाइल को स्क्रिप्ट में शामिल करने के लिए .
(वर्तनी भी source
) बिल्ट का उपयोग करें ।
$ cat ~/lib/bash/my_functions.bash
foo () {
…
$ cat ~/bin/myscript
#!/bin/bash
. ~/lib/bash/my_functions.bash
foo bar
आप चाहें तो ksh के ऑटोलैड फीचर को फॉलो कर सकते हैं। प्रत्येक फ़ंक्शन परिभाषा को फ़ंक्शन के समान नाम वाली फ़ाइल में रखें। FPATH
चर में फ़ंक्शन परिभाषाओं वाली निर्देशिकाओं को सूचीबद्ध करें (निर्देशिकाओं की एक बृहदान्त्र-पृथक सूची)। यहाँ ksh का एक कच्चा सन्निकटन है autoload
जो वास्तव में ऑन-डिमांड के बजाय फ़ंक्शन को तुरंत लोड करता है:
autoload () {
set -- "$(set +f; IFS=:;
for d in $FPATH; do
if [ -r "$d/$1" ]; then echo -E "$d/$1"; break; fi;
done)"
[[ -n $1 ]] && . "$1"
}