.bashrc
hanya dibaca oleh cangkang interaktif. (Sebenarnya, itu penyederhanaan berlebihan: bash unik dalam hal ini. Bash tidak membaca .bashrc
apakah itu shell login, interaktif atau tidak. Dan ada pengecualian bahkan untuk pengecualian: jika proses induk bash adalah rshd
atau sshd
, maka bash membaca .bashrc
, apakah itu interaktif atau tidak.)
Letakkan definisi fungsi Anda dalam file di tempat yang diketahui, dan gunakan builtin .
(juga dieja source
) untuk memasukkan file itu dalam skrip.
$ cat ~/lib/bash/my_functions.bash
foo () {
…
$ cat ~/bin/myscript
#!/bin/bash
. ~/lib/bash/my_functions.bash
foo bar
Jika mau, Anda dapat mengikuti fitur pengisian otomatis ksh. Masukkan setiap definisi fungsi dalam file dengan nama yang sama dengan fungsi. Daftar direktori yang berisi definisi fungsi dalam FPATH
variabel (daftar direktori yang dipisahkan oleh titik dua). Berikut ini perkiraan kasar dari ksh autoload
yang sebenarnya memuat fungsi segera alih-alih sesuai permintaan:
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"
}