Os aliases não são herdados. É por isso que eles são tradicionalmente definidos em bashrc
e não em profile
. Fonte seu script.sh
do seu .bashrc
ou o todo o sistema em vez disso.
Eu configurei aliases em /etc/profile.d/alias.sh para cada shell de login. Mas se eu executar script.sh, não posso usar esse alias. Como posso definir alias, mesmo para subshells ou processos filhos?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
É porque /etc/profile.d/ é usado apenas pelo shell de login interativo. No entanto, /etc/bash.bashrc
é usado pelo shell interativo de não-login.
Como normalmente defino alguns aliases globais para o sistema, comecei a criar /etc/bashrc.d
onde posso soltar um arquivo com alguns aliases globais:
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