Baixei o .deb
arquivo do VS Code para o Ubuntu. Renomeei para vs.deb
.
Então eu vou para o meu diretório de downloads:
cd ~/Downloads
E agora que estou aqui, tento instalá-lo:
sudo apt install vs.deb
E aqui está o que eu recebo:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vs.deb
E: Couldn't find any package by glob 'vs.deb'
Mas quando eu instalo usando ./vs.deb
, ele é instalado:
sudo apt install ./vs.deb
Por que o Linux não aceita o nome do arquivo dentro do mesmo diretório sem exigir o caminho relativo?
O que você experimenta não está relacionado ao shell, mas a como o
apt
comando interpreta os argumentos na linha de comando.Destina-se principalmente à instalação de pacotes dos repositórios de software. Por padrão, um argumento para
apt
significa o nome de um pacote nas fontes de software. A mensagem:indica claramente que um pacote
vs.deb
não existe nas fontes de software.Ainda assim,
apt
permite que você instale diretamente um.deb
arquivo de pacote baixado e resolva as dependências dele. Você deve fornecer um caminho de arquivo explícito para indicar que deseja instalar um.deb
arquivo../vs.deb
já indica um caminho de arquivo:./
significa o diretório atual, então o apt encontrará ovs.deb
arquivo no diretório atual.Na verdade, nunca é o shell que "encontra" um arquivo. O shell apenas passa argumentos para o aplicativo e cabe ao aplicativo interpretar esses argumentos. No máximo, o shell faz expansão (por exemplo, substituindo
*
por todos os nomes de arquivo ou~
pelo caminho completo de sua pasta pessoal) ou substituição de variável (por exemplo$HOME
, é substituído pelo conteúdo dessa variável).