Esta función existe en uno de mis usuarios ~ / .bashrc:
function rm()
{
ls $*
echo "rm?"
read ans
if [ "$ans" == 'y' ]; then
/bin/rm $*
fi
}
En mi script ksh que los usuarios deben ejecutar, tengo una línea como esta:
[[ "$KEEP" = "" ]] && \rm $FILE
Si bien la barra diagonal inversa escapa a los alias definidos por el usuario, no impide que el script ejecute funciones definidas por el usuario con el mismo nombre. Como resultado, se llama a la función rm () de mi usuario en lugar de la función del sistema.
Encontré esta pregunta y respuesta de pregunta de superusuario, pero la resolución solo se aplica a una función incorporada, no a un comando del sistema.
¿Qué es lo mejor para hacer que se invoque el comando rm y no un alias o función? ¿Debo especificar la ruta completa a rm y cada comando del sistema que quiero asegurar se ejecuta correctamente? ¿Hay una mejor manera?
env
ruta. Además, puede determinar la ubicación de cada herramienta una vez y almacenarla en una variable, por ejemploRM=$( /usr/bin/env which rm ); [much more code]; $RM some_file;
. También podría cambiar cómo se ejecuta su script. Por lo general, las funciones y los alias no se heredan, de lo contrario, romperían los scripts todo el tiempo.