エイリアスは継承されません。そのため、伝統的に bashrc
に設定されています profile
ではありません .ソース script.sh
.bashrc
から または代わりにシステム全体のもの。
それらをサブシェルに継承させたい場合は、代わりに関数を使用してください。それらは環境にエクスポートできます (export -f
)、サブシェルにはこれらの関数が定義されます。
したがって、あなたの例の1つについて:
rmvr() { rm -rv "[email protected]"; }
export -f rmvr
それらがたくさんある場合は、最初にエクスポート用に設定してください:
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
これは、/etc/profile.d/ が対話型ログイン シェルでのみ使用されるためです。ただし、/etc/bash.bashrc
インタラクティブな非ログイン シェルで使用されます。
通常、システムにいくつかのグローバル エイリアスを設定するので、/etc/bashrc.d
の作成を開始しました。 いくつかのグローバル エイリアスを含むファイルをドロップできる場所:
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