Executar Programas pelo Terminal

Iniciado por christiankiss, 10 de Junho de 2011, 16:14

tópico anterior - próximo tópico

christiankiss

Boa tarde.

Primeiro vou explicar o motivo do tópico e depois a pergunta:

Quando há um programa instalado pela Central de Programas do Ubuntu, eu simplesmente abro o terminal, e sem navegar para nenhuma outra pasta, eu só digito o nome do software e ele abre. Exemplos: gedit, gimp, gcalctool, libreoffice etc.

Eu sempre achei esses comandos muito práticos, desde a época que eu usava o Windows e colocava meus atalhos em "c:\Windows\System32" para rodar aplicativos rapidamente pelo "Executar". =)

A minha dúvida é a seguinte: alguns aplicativos eu não instalo pela Central de Programas. O Eclipse, por exemplo, eu preferi baixar pelo site do desenvolvedor para obter uma versão específica para Java. Só que o Eclipse não é instalado, ele apenas descompacta um arquivo tarball e o programa é rodado pelo executável "eclipse". No terminal, eu acesso o diretório do eclipse e rodo o comando "./eclipse". Como eu faria para "registrar" o nome desse aplicativo no Ubuntu e rodá-lo pelo nome "eclipse", sem precisar navegar para a pasta do programa pelo terminal?

Desde já, agradeço.

Tota

Ola

Voce pode procurar por => variáveis de ambiente

Se voce incluir na variavel de ambiente $Path o caminho para o arquivo executável ./eclipse o sistema o encontrará.

[]'s

koheleth

Tota,

Eu uso o Ubuntu 10.04, não sei se essa dica vai te ajudar.

Tem um software chamado "Gnome Do", que é parecido com o Quicksilver para Mac e Launchy para Windows.

Quando aperto a tecla super(win)+barra de espaço, ele abre, e basta digitar parte do nome do programa para abrí-lo.

Ele está na Central de programas, é só instalar.

Ele é bem configurável, vale apena usar
Ubuntu 13.04
acesse: Guia LPI
Profº Marcos Aurélio

christiankiss

#3
Valeu, Tota. Você me deu o caminho das pedras. =)

Tem que incluir a variável PATH no arquivo .bashrc, informando o caminho do diretório do executável.

Para os interessados, o passo-a-passo:

1. Abrir o terminal;

2. Digitar: gedit ~/.bashrc

3. Na última linha do arquivo, incluir: export PATH=$PATH:/home/christiano/eclipse

OBS.: No caso, tenho uma pasta "eclipse" dentro da pasta pessoal do usuário Christiano. Depende do programa e onde está o executável.

koheleth: Valeu pela dica, mas eu queria mesmo era fazer na "unha" pelos recursos nativos do Ubuntu/Linux. Mas a dica é boa... dá até pra fazer pelo atalho do teclado.

druidaobelix

#4
Olá christiankiss,

Um primeiro ponto a notar é que a dificuldade ocorre porque o programa, no exemplo o Eclipse, não segue estritamente a normativa do FHS - Filesystem Hierarchy  Standard, preferindo colocar todos os seus arquivos em uma única pasta própria.

FHS define os diretórios principais e seus conteúdos dentro do sistema operacional Linux. Quem quiser uma visão resumida e bastante simples disso pode conferir aqui:

http://pt.wikipedia.org/wiki/FHS

Adicionalmente, essa pasta própria do eclipse contendo todos os seus arquivos, obtida após a descompactação, pode ser colocada em qualquer caminho, desde que todos os arquivos estejam juntos, entretanto, é de ver que deixar essa pasta no caminho /home é, digamos assim, pelo menos uma impropriedade.

O diretório /home conceitualmente não deveria conter arquivos binários, executáveis, mas apenas arquivos que correspondam a arquivos de geração própria do usuário (documentos textos, imagens, configurações, etc).

A impropriedade fica manifesta quando se pensa no procedimento de backup da pasta /home, onde então se estará copiando arquivos desnecessários, ocupando um espaço maior e ainda alongando o tempo de execução do backup, já que em princípio não é necessário fazer backup do programa propriamente dito, já que a qualquer momento, em caso de necessidade, pode novamente ser feito o download a partir de sua origem (repositório, site).

O FHS, de maneira geral, prevê a utilização do diretório /opt/ para aplicações.

No caso do Eclipse isso seria perfeitamente possível uma vez que o programa permite determinar o caminho onde devem ser salvos os trabalhos realizados, numa pasta que por padrão ele denomina de workspace, a qual, essa sim, pode ser colocada em qualquer caminho, como por exemplo, /home/nome_usuario/desenvolvimento/eclipse/workspace, ou qualquer outro que se queira.

Retornemos, porém, ao foco da questão proposta, que é poder chamar o programa a partir do terminal digitando apenas o seu nome (nome do binário), isto é, sem ter que anteceder esse nome com o comando de execução (./), usando o bash, que é o interpretador de comando padrão do Linux.

Uma solução possível é criar um link simbólico no path do sistema apontando para o binário executável.

Só para ilustrar, vamos supor a seguinte situação, feito o download compactado do eclipse, baixado e descompactado dentro da pasta Downloads, descompactação essa que gera a pasta eclipse, dentro da qual estão todos os arquivos do programa.

Esse passo é desnecessário, dependendo de onde se queira deixar o eclipse, mas é apenas para ilustar, vamos transferir a pasta eclipse para o diretório /opt/

sudo mv /home/nome_usuario/Downloads/eclipse /opt/

nome_usuario, claro, usa o nome de usuário real do sistema, no caso concreto.

Criando um link simbólico.

A path do sistema é dada por:

echo $PATH

o que resulta em:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Vamos criar o link simbólico dentro de /usr/local/sbin

Entrando no diretório:

cd /usr/local/sbin

Criando o link simbólico com o nome exato do próprio binário executável:

sudo ln -s /opt/eclipse/eclipse

Conferindo se o link simbólico está lá

ls

resulta:

eclipse (em cor diferenciada, azul claro, se estiver usando esquema de cores para o terminal)

Experimente agora chamar o programa digitando apenas eclipse a partir de qualquer ponto do terminal e verá o carregamento do programa. Por exemplo, navegue até a pasta /home/nome_usuario e digite eclipse.

cd /home/nome_usuario
eclipse

Um ponto a notar é que essa espécie de uso, carregar o programa a partir do terminal, faz com que o terminal fique "preso" ao programa que está sendo executado, o que é uma desvantagem (experimente fazer o mesmo com o firefox), quando comparativamente se aciona o programa a partir do ambiente gráfico.

Embora seja possível fazer uso da opção acima descrita, é sempre melhor manter uma entrada do programa que se instalou no menu do sistema, existente na barra superior (tomando como referência o Ubuntu 11.04, ambiente clássico), usando o procedimento padrão de criação dessa entrada para aqueles programas que não se instalam ou se instalam e não criam por si próprios essa entrada no ambiente gráfico.

Os desenvolvedores despendem muito esforço e energia para criar ferramentas amigáveis para a realização das tarefas do sistema, sendo o uso do terminal (CLI - Command Line Interface, segundo alguns, numa corruptela, Command Linux Interface) uma exceção à regra, que é o uso do ambiente gráfico.

O procedimento padrão para criação de entrada no menu do sistema é clicar no último ícone à direita da barra superior, o painel, localizando a entrada "Configurações do sistema", abre-se a janela "Centro de Controle".

Dentro do "Centro de Controle", no grupo "Pessoal", localize o ícone "Menu principal", click nele.

Na coluna à esquerda identifique e torne ativo o grupo em que se quer instalar o ícone (no nosso exemplo do Eclipse, seria o grupo "Desenvolvimento", mas pode ser qualquer um que se queira).

Click no botão "+Novo item" para adicionar uma entrada.

Coloque um nome que se queira no campo "Nome"

Use o botão "Navegar" para encontrar o executável e estabelecer o comando de chamada do programa correspondente.

Click em OK para fechar, pronto, a entrada de chamada do programa e seu correspondente ícone estão colocados no menu do sistema, de forma rápida, fácil e simples.

Embora absolutamente desnecessário, haja vista o procedimento padrão acima descrito, querendo, sempre é possível complicar e adicionar a entrada no menu do sistema manualmente.

Cada entrada do menu do sistema possui um arquivo correspondente no formato nome_do_programa.desktop no diretório:

/usr/share/applications

Assim sendo, pode ser criado um arquivo texto (use o gedit para isso) e adicionado nesse diretório, arquivo esse no seguinte formato que se pode exemplificar com o gbrainy.desktop, que é um jogo disponível no menu do sistema em Aplicativos/Jogos/gbrainy:

[Desktop Entry]
Version=1.0
Name=gbrainy
GenericName=Game
Comment=Play games that challenge your logic, verbal, calculation and memory abilities
Exec=gbrainy
Icon=gbrainy
StartupNotify=true
Terminal=false
Type=Application
Categories=GNOME;GTK;Game;LogicGame;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gbrainy
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=@VERSION@
X-Ubuntu-Gettext-Domain=gbrainy

Ainda como exemplo, no caso do Eclipse, poderia ser criado um eclipse.desktop nos seguintes moldes:

[Desktop Entry]
Name=Eclipse
Comment=ferramenta de desenvolvimento
Exec=/opt/eclipse/eclipse
Terminal=false
Type=Application
Icon=/opt/eclipse/eclipse_icon.png
Categories=Development;Database;

Como dito acima, isso é apenas complicação desnecessária, já que o procedimento padrão faz tudo isso de forma muito mais simples e rápida, entretanto, é apenas para constar a possibilidade.

[]'s

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

cesargcomp

Outra forma seria criar um alias (apelido) para o programas.

1. Abra o arquivo /etc/bash.bashrc (sudo gedit /etc/bash.bashrc) e adicione as seguintes linhas no final do arquivo:
if [ -f ~/.bash_alias ]; then
    . ~/.bash_alias
fi


2. Crie um arquivo com o nome de .bash_alias (gedit /home/usuario/.bash_alias) no diretório /home/usuario e adicione os alias dentro dele.
Exemplo:
alias eclipse='/home/usuario/eclipe/eclipse'
alias hjsplit='/home/cesar/Downloads/hjsplitlx_v3.1/hjsplit'


3. Reinicie a sessão e teste.

No caso, só para complementar, você pode adicionar vários alias para outras tarefas. Olhe os exemplos:
alias update='sudo apt-get update'
alias upgrade='sudo apt-get upgrade'
alias install='sudo apt-get install '
alias remove='sudo apt-get remove '
alias purge='sudo apt-get --purge remove '
alias search='sudo apt-cache search '

Fonte: http://www.thelinuxgeeks.info/2011/06/09/custom-ubuntu-alias/

Espero ter ajudado.
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.

christiankiss

druidaobelix: Nossa, ótima a sua resposta. O procedimento funciona direitinho. Obrigado pela atenção!

cesargcomp: Interessante este método. Da maneira que eu postei acima, só é possível chamar o programa pelo nome do executável.

Obrigado pela atenção de todos. =)

bred81

#7
Só pra mostrar mais um jeito:

eu crio uma pasta bin no home mkdir ~/bin e crio um link pro executável que eu quero cd ~/bin && ln -s /nome/do/executavel

Reinicia a seção que funciona.
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

jackads

Para não abrir outro tópico gostaria que alguém pudesse me ajudar em uma questão do mesmo tipo por aqui mesmo, se puderem.

Estive lendo o tutorial http://wiki.ubuntu-br.org/ConfigurandoVari%C3%A1veisDeAmbiente para tentar aprender como configurar a variável PATH para que eu possa executar comandos no terminal em qualquer lugar, por exemplo, eu tenho um comando dentro da pasta "/android-sdk-linux/tools" que se chama android, mas eu gostaria de poder executar o comando android fora da tal pasta.

Então eu fiz mais ou menos o que o tutorial mandava, eu editei o arquivo /etc/bash.bashrc adicionando a seguinte linha:

export ANDROID_TOOLS=/home/jackads/android-sdk-linux/tools

Que é o caminho mesmo onde está a tal pasta com os tais arquivos dos comandos, então eu dei o comando

source /etc/bash.bashrc
e
$ANDROID_TOOLS

Como ensinava o tutorial para testar se havia sido carregado corretamente, e então o terminal exibiu

bash: /home/jackads/android-sdk-linux/tools: É um diretório

Acreditando que havia dado certo tentei executar o comando que desejava, mas não funcionou.

Aí agora vi esse tópico e o rapaz fala de outra forma e em outro arquivo, então fiz do seguinte modo:

export ANDROID_TOOLS=$ANDROID_TOOLS:/home/jackads/android-sdk-linux/tools

e modificar no arquivo ~/.bashrc mas também não funcionou, então fiz o mesmo no /etc/bash.bashrc e ficou assim quando peço o eco

jackads@matrix:~$ echo $ANDROID_TOOLS
/home/jackads/android-sdk-linux/tools:/home/jackads/android-sdk-linux/tools:/home/jackads/android-sdk-linux/tools

Mas mesmo assim não funciona. Não sei mais o que fazer para configurar essa variável de caminho.

Faltou alguma coisa? Ou o tutorial para carregar o PATH para os comandos java não funciona para carregar o PATH para outros comandos diferentes? Porque essa forma do eclipse também não funcionou. =/

Obrigado pela atenção, que Deus os abençoe e tenham um feliz ano novo!