O primeiro ponto principal é que ./ especifica o diretório atual ou de trabalho, ou seja, o diretório em que você está agora, que também é aquele que você vê se digitar o comando pwd (print working directory) . Tendo isso em mente, o bash funciona de duas maneiras:
-
Se você especificar um executável vazio, como
adb, em que nenhum diretório é fornecido, o bash pesquisará os diretórios listados no PATH do sistema para um executável desse nome e executará o primeiro executável que encontrar.Para ver quais diretórios estão no sistema PATH, execute
echo $PATH -
Se você especificar um executável com um diretório, como
./no seu caso, o bash procurará apenas um executável nesse diretório. Se não estiver lá, ele pára com um erro.
No seu caso, você estava na pasta DEV/ADT/sdk/platform-tools onde o executável, adb , estava localizado. Então, quando você digita ./adb , o bash procura por adb no diretório atual e, se o encontrar, ele o executa.
Como alternativa, quando você digita adb , o bash examina os diretórios no PATH. Como DEV/ADT/sdk/platform-tools aparentemente não está no PATH, ele não encontra o executável e reclama.
Geralmente, as pessoas evitam esse problema colocando o diretório atual em seu PATH por meio de algo como:
PATH="$PATH:."
Depois disso, quando você digitar o nome do executável, como adb , o bash irá procurá-lo, como antes, ao longo do PATH. Mas como o PATH agora inclui o diretório atual, ele também aparecerá lá.
A adição de . ao PATH é comumente feita para usuários pessoais. Como é mais perigoso quando o root executa o executável incorretamente, isso geralmente não é feito para o root.