Como saber o caminho de um software específico?

13

Contexto: estou tentando fazer um aplicativo iniciar automaticamente quando faço login. Para isso, preciso selecionar o pathpara o aplicativo.

insira a descrição da imagem aqui

Aqui estão os caminhos que eu já procurei:

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

Se isso puder ajudar, o aplicativo que estou tentando encontrar se chama " ScreenCloud " e o baixei do Ubuntu Software Center.

Mas não consigo encontrá-lo. Existe alguma maneira de saber onde está instalado um software específico? Porque, mesmo que eu encontrasse, gostaria de evitar o mesmo problema no futuro.

Ced
fonte
2
Não funciona se você digitar screencloud na linha de comando?
Graham
Você conseguiu na loja de snap ou no centro de software Ubuntu porque não consigo encontrá-lo em nenhum repositório apt do Ubuntu.
Mchid 16/05/19
2
@mchid Eu não estava endereçando o link do OP, mas sim o seu comentário: "porque não consigo encontrá-lo em nenhum dos repositórios apt do Ubuntu" O Screencloud pode ser instalado a partir do .debpacote, mas você precisa adicionar o PPA.
WinEunuuchs2Unix 16/05/19
1
@mchid Eu sabia que o comando foi alterado de screencloud.shpara screencloude suspeitava que foi movido /opt. Essa parte da minha resposta estava apontando como typee whichnão encontraria, screencloudmas encontraria locate.
WinEunuuchs2Unix 17/05/19
1
@ WinEunuuchs2Unix Direito em. screencloud.shna verdade, ainda existe, mas não tenho certeza de como ele difere, screencloudexceto pelo fato de o .sharquivo ser um script e screencloudnão. Eu realmente não estou familiarizado com esta aplicação. Abaixo, /usr/bin/há a screencloud, a screencloud.she também a screencloud-seguido pelo número da versão, como gimpé o caso.
Mchid 20/05/19

Respostas:

16

Encontre o caminho de um executável

Melhor maneira

  • type executable

Confira esta pergunta para saber mais sobre como typeé melhor. (Obrigado, comentários!)

Outras maneiras

  • whereis executable
  • which executable

Esses comandos pesquisam apenas a variável PATH ( echo $PATH), portanto, não são válidos em alguns casos (funções internas, aliases ou funções bash e muito mais).

Biggybi
fonte
3
por incrível que pareça, ainda não era uma pergunta sobre o ubuntu. boa pergunta @Ced!
tatsu 15/05/19
Na verdade, eu mal posso acreditar!
Biggybi
1
Descobri a partir de outra pergunta que typeé preferível which, pois é um shell embutido e pode determinar se um comando é um alias. Isso também era novo para mim!
Arronical
1
Veja aqui uma (longa) explicação sobre por que typeé preferível: Por que não usar "what"? O que usar então?
terdon 15/05/19
1
@mchid todos os pontos na resposta se aplicam. Incluindo a seção "Casos de Uso", que aponta que whiché realmente útil no contexto específico de scripts de shell. Fora desse contexto, no entanto, typequase sempre é a melhor escolha.
terdon 21/05/19
1

Encontre o local do comando dentro ou fora do caminho

Suponha que você queira encontrar a localização de unameum programa que lista as informações do sistema. Se você deseja saber em qual diretório o comando de nível superior está armazenado, você tem várias opções:

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

Localize vantagens

A última opção locateretorna todos os arquivos que unamenão contêm apenas o programa executado no prompt de comando.

A vantagem locateé que ele encontrará comandos que não estão no seu caminho de pesquisa. type -a(preferível a simples type) e whichencontrará apenas comandos no seu caminho de pesquisa. Para ver seu caminho de pesquisa, use echo $PATH.

Tomemos, por exemplo, esta resposta em Como iniciar o screencloud? :

Experimentar...

/opt/screencloud/screencloud.sh

O locate screencloudcomando irá encontrá-lo, mas which screencloude type -a screencloudnão vai, porque:

  • O nome completo é screencloud.she somente o locatecomando pesquisa em correspondência parcial.
  • /opt/screencloudprovavelmente não está no caminho de pesquisa. whiche typeprocure apenas arquivos executáveis ​​no caminho de pesquisa.

Nota: Esta é uma resposta mais antiga. O ScreenCloud moderno é chamado com screencloud.

A vantagem do Locate sobre o findcomando é que ele pode ser centenas ou até milhares de vezes mais rápido. A execução a findpartir de /também dará muitos erros de permissão com os quais você não experimentará locate.

Localize desvantagens

Se você acabou de instalar o programa hoje, precisará sudo updatedbatualizá-lo.

WinEunuuchs2Unix
fonte
1

Use o seguinte comando para listar todos os seus $PATHdiretórios:

echo $PATH | sed 's/:/\n/g'

Use o seguinte comando para encontrar o caminho completo para screencloud:

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

Se você usou apt, apt-getou o Ubuntu Software Center para instalar o pacote, pode usar o seguinte comando para encontrar o caminho completo:

dpkg -L screencloud | grep bin

Supondo que você tenha usado este repositório , você poderá encontrá screencloud -lo /usr/bin/.

O caminho completo é:

/usr/bin/screencloud

ou

/usr/bin/screencloud-*

No entanto, se você usasse a loja snapcraft de acordo com o link fornecido na sua pergunta, o caminho estaria no seguinte diretório:

/snap/bin

mais informações

Além disso, lembre-se de que o Ubuntu diferencia maiúsculas de minúsculas, portanto você deve usar todas as letras minúsculas sem letras maiúsculas.

mchid
fonte
Obrigado por esta resposta muito detalhada, você ganhou um voto positivo :) #
181 de Ced
1
Foi efetivamente abaixo /snap/bin!
Ced