Comment by MD87
The difference is that `ls` is specified in POSIX and everyone has roughly the same expectations of what it does.
Nothing specifies what a binary called `sl` does. The user didn't "overwrite" anything. They just had an `sl` binary that was not the `sl` binary Jest expects. Arguably they had the more commonly known binary with that name.