O comando type
faz mais do que apenas fornecer a localização de um executável. Deixe-me citar a saída de help type
:
Display information about command type.
For each NAME, indicate how it would be interpreted if used as command name.
Ou seja, o comando type
informa, para o argumento fornecido, como ele seria interpretado pelo shell se usado como um comando. Para executáveis em seu caminho, ele lhe dará a localização deles. Mas existem outros tipos de comandos que não são executáveis. Entre esses são bash builtins. Por exemplo, o comando cd
é um bash embutido:
$ type cd
cd is a shell builtin
Em outras palavras, não há nenhum executável chamado cd
. Pelo contrário, é um comando diretamente interpretado pelo shell; é uma parte da linguagem da shell. Da mesma forma, o comando type
é um bash embutido:
$ type type
type is a shell builtin
Outro tipo de comandos são aliases. Os aliases podem ser usados como atalhos convenientes personalizáveis pelo usuário para comandos que, de outra forma, seriam longos para serem digitados. Você pode digitar alias
para ver os aliases atualmente definidos no seu shell. Para mim, dá:
$ alias
alias ll='ls -la'
alias ls='ls --color=auto'
(e mais alguns que eu mesmo configurei, mas eu ignorei-os pela simplicidade)
Portanto, se eu digitar type ls
, recebo as informações de que ls
é um alias, assim como no seu caso:
$ type ls
ls is aliased to 'ls --color=auto'
Isso ocorre simplesmente porque sua distribuição definiu esse alias em algum lugar na configuração do shell de seu usuário (por exemplo, em .bashrc
se você estiver usando o bash). A razão é que, desta forma, a saída do comando ls
é sempre colorida (não é por padrão). Se você quiser descobrir o que ls
significaria se esse alias não estivesse lá, você pode simplesmente unalias ls
em sua sessão de shell atual e, em seguida, usar type ls
:
$ unalias ls
$ type ls
ls is hashed (/bin/ls)