.bashrc
yalnızca etkileşimli kabuklar tarafından okunur. Bash okumaz Bash bu açıdan ilginç. (Aslında o bir oversimplification .bashrc
interaktif, bir giriş kabuğu eğer ya da değil Ve bir istisna bile istisna var:. Bash ebeveyni süreci ise rshd
veya sshd
daha sonra bash okuyacak .bashrc
, etkileşimli olsun veya olmasın.)
İşlev tanımlarınızı bilinen bir yere bir dosyaya koyun ve .
(aynı zamanda yazıldığını source
) yerleşik dosyayı kullanarak bir dosyayı betiğe ekleyin.
$ cat ~/lib/bash/my_functions.bash
foo () {
…
$ cat ~/bin/myscript
#!/bin/bash
. ~/lib/bash/my_functions.bash
foo bar
İsterseniz, ksh'ın otomatik yükleme özelliğini takip edebilirsiniz. Her işlev tanımını işlevle aynı ada sahip bir dosyaya yerleştirin. FPATH
Değişkende işlev tanımlarını içeren dizinleri (iki nokta üst üste işaretli dizin listesi) listeleyin. İşte autoload
, isteğe bağlı olarak hemen işlevi yükleyen ksh'ların kaba bir yaklaşımı :
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"
}