Alias tidak diwariskan. Itu sebabnya mereka secara tradisional diatur dalam bashrc
dan bukan profile
. Sumber script.sh
Anda dari .bashrc
Anda atau yang seluruh sistem sebagai gantinya.
Jika Anda ingin mereka diwariskan ke sub-kulit, gunakan fungsi sebagai gantinya. Itu dapat diekspor ke lingkungan (export -f
), dan sub-kulit kemudian akan menentukan fungsi tersebut.
Jadi, untuk salah satu contoh Anda:
rmvr() { rm -rv "[email protected]"; }
export -f rmvr
Jika Anda memiliki banyak dari mereka, setel untuk ekspor terlebih dahulu:
set -a # export the following funcs
rmvr() { rm -rv "[email protected]"; }
cpvr() { cp -rv "[email protected]"; }
mvrv() { mv -rv "[email protected]"; }
set +a # stop exporting
Itu karena /etc/profile.d/ hanya digunakan oleh shell login interaktif. Namun, /etc/bash.bashrc
digunakan oleh shell non-login interaktif.
Seperti biasanya saya menyetel beberapa alias global untuk sistem, saya sudah mulai membuat /etc/bashrc.d
tempat saya dapat meletakkan file dengan beberapa alias global:
HAVE_BASHRC_D=`cat /etc/bash.bashrc | grep -F '/etc/bashrc.d' | wc -l`
if [ ! -d /etc/bashrc.d ]; then
mkdir -p /etc/bashrc.d
fi
if [ "$HAVE_BASHRC_D" == "0" ]; then
echo "Setting up bash aliases"
(cat <<-'EOF'
if [ -d /etc/bashrc.d ]; then
for i in /etc/bashrc.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
EOF
) >> /etc/bash.bashrc
fi