回答:
エイリアスは継承されません。だからこそ、彼らは伝統的に設定されbashrc
ていないのprofile
です。代わりに、システム全体またはシステム全体script.sh
からソースを取得してください.bashrc
。
()
alias foo='echo foobar'
、enter、(foo)
outputs foobar
でした。
これは、/ 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
それらをサブシェルに継承したい場合は、代わりに関数を使用してください。これらは環境(export -f
)にエクスポートでき、サブシェルにはそれらの関数が定義されます。
だから、あなたの例の1つに対して:
rmvr() { rm -rv "$@"; }
export -f rmvr
それらがたくさんある場合は、最初にエクスポート用に設定します。
set -a # export the following funcs
rmvr() { rm -rv "$@"; }
cpvr() { cp -rv "$@"; }
mvrv() { mv -rv "$@"; }
set +a # stop exporting