Answers:
别名不被继承。这就是为什么他们传统上在设置bashrc
和不profile
。而是script.sh
从您的.bashrc
或系统范围的资源中获取您的资源。
()
alias foo='echo foobar'
,enter,(foo)
outputs foobar
。
这是因为/etc/profile.d/仅由交互式登录Shell使用。但是,/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