type command does more than just giving you the location of an executable. Let me cite from the output of
Display information about command type.
For each NAME, indicate how it would be interpreted if used as command name.
That is, the
type command tells you, for the given argument, how it would be interpreted by the shell if used as a command. For executables in your path, it will give you their location. But there are other types of commands that are not executables. Among those are bash builtins. For instance, the command
cd is a bash builtin:
$ type cd
cd is a shell builtin
In other words, there is no executable called
cd. Rather, it is a command directly interpreted by the shell; it is a part of the shell's language. Similarly, the command
type is a bash builtin:
$ type type
type is a shell builtin
Another type of commands are aliases. Aliases can be used as convenient user-customizable shortcuts for commands that would otherwise be lengthy to type. You can type
alias to see the aliases currently set in your shell. For me, it gives:
alias ll='ls -la'
alias ls='ls --color=auto'
(and a few more that I configured myself, but I skipped them for simplicity)
Therefore, if I type
type ls, I get the information that
ls is an alias, just as in your case:
$ type ls
ls is aliased to `ls --color=auto'
This is simply because your distribution set this alias somewhere in your user's shell configuration (e.g., in
.bashrc if you're using bash). The reason is that this way, the output of the
ls command is always colored (it isn't by default). If you would like to find out what
ls would mean if this alias was not there, you can simply unalias
ls in your current shell session and then use
$ unalias ls
$ type ls
ls is hashed (/bin/ls)