Cette fonction existe dans l'un des ~ / .bashrc de mes utilisateurs:
function rm()
{
ls $*
echo "rm?"
read ans
if [ "$ans" == 'y' ]; then
/bin/rm $*
fi
}
Dans mon script ksh que les utilisateurs doivent exécuter, j'ai une ligne comme celle-ci:
[[ "$KEEP" = "" ]] && \rm $FILE
Bien que la barre oblique inverse échappe aux alias définis par l'utilisateur, elle n'empêche pas le script d'exécuter des fonctions définies par l'utilisateur portant le même nom. Par conséquent, la fonction rm () de mon utilisateur est appelée à la place de la fonction système.
J'ai trouvé cette question et réponse de superutilisateur, mais la résolution ne s'applique qu'à une fonction intégrée, pas à une commande système.
Quel est le meilleur moyen de faire en sorte que la commande rm ne soit pas appelée, et non un alias ou une fonction? Dois-je spécifier le chemin d'accès complet à rm et chaque commande système que je veux m'assurer est exécutée correctement? Y a-t-il une meilleure façon?