Los alias no se heredan. Es por eso que tradicionalmente se configuran en bashrc
y no profile
. Obtenga su script.sh
de tu .bashrc
o el de todo el sistema en su lugar.
Si desea que se hereden en subcapas, use funciones en su lugar. Estos se pueden exportar al entorno (export -f
), y las subcapas tendrán esas funciones definidas.
Entonces, para uno de tus ejemplos:
rmvr() { rm -rv "[email protected]"; }
export -f rmvr
Si tiene un montón de ellos, configure primero para exportar:
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
Esto se debe a que /etc/profile.d/ solo lo usa el shell de inicio de sesión interactivo. Sin embargo, /etc/bash.bashrc
es utilizado por el shell interactivo sin inicio de sesión.
Como suelo establecer algunos alias globales para el sistema, comencé a crear /etc/bashrc.d
donde puedo colocar un archivo con algunos alias globales:
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