この関数は、ユーザーの〜/ .bashrcのいずれかに存在します。
function rm()
{
ls $*
echo "rm?"
read ans
if [ "$ans" == 'y' ]; then
/bin/rm $*
fi
}
ユーザーが実行する必要がある私のkshスクリプトには、次のような行があります。
[[ "$KEEP" = "" ]] && \rm $FILE
バックスラッシュはユーザー定義のエイリアスをエスケープしますが、スクリプトが同じ名前のユーザー定義関数を実行することを停止しません。その結果、システム関数の代わりにユーザーのrm()関数が呼び出されます。
このスーパーユーザーの質問の質問と応答が見つかりましたが、解決策は組み込みコマンドにのみ適用され、システムコマンドには適用されません。
エイリアスや関数ではなく、rmコマンドの呼び出しを強制するのに最適なものは何ですか?rmへのフルパスを指定する必要があり、確認するすべてのシステムコマンドが正しく実行されますか?もっと良い方法はありますか?