Para ser claro, não "todo arquivo é executável". Os arquivos possuem metadados associados a eles, e uma parte desses metadados inclui se é ou não executável. Uma maneira de examinar esses metadados é com o comando ls
:
$ ls -l
total 12
-rwxr-xr-x 1 ownerName groupName 4 Mar 20 18:01 executableFile
^ ^ ^
Eu não quero me aprofundar muito nas permissões, mas essas
x's indicam que o arquivo é executável, da direita para a esquerda,
pelo usuário ownerName
, por qualquer pessoa no grupo groupName
,
ou por qualquer outra pessoa. Geralmente, o ownerName
e groupName
serão
root
, então o terceiro x
será o que você provavelmente será o mais
interessado no curto prazo.
Qual executável é executado quando você digita um comando? Assim como no Windows, há uma variável de ambiente chamada PATH que contém um conjunto de diretórios em que o shell (o interpretador de comandos) procura arquivos executáveis com o nome que você fornece. O Windows usa ;
como um delimitador de diretório, o Linux (e Unix é geral) usa :
. Você pode usar o comando echo
para imprimir o conteúdo dessa variável:
$ echo $PATH
/bin:/usr/bin:/usr/local/bin...
Você pode usar o comando which
para identificar o caminho completo de um comando:
$ which ls
/usr/bin/ls
Como @Stan Strum mencionado em um comentário acima, você também pode usar o comando type
:
$ type ls
ls is hashed (/usr/bin/ls)