Como faço para executar um programa específico, apenas digitando seu nome no console?

17

Recentemente, instalei o Light Table baixando-o do repositório git e segui as instruções neste site para criar um iniciador de desktop.

Agora eu quero executar o programa digitando diretamente no terminal

LightTable

e não

./opt/LightTable/deploy/LightTable
dapias
fonte
6
@ user68186 A adição do diretório que contém a PATHvariável de ambiente geralmente não é a melhor maneira de conseguir isso, e às vezes pode até quebrar o sistema ou criar vulnerabilidades de segurança. (Deve-se considerar quaisquer outros executáveis que serão transformados em comandos a partir deste, bem como , onde , em PATHque é adicionado.) Adicionando um alias de shell, como coberto por respostas aqui, é melhor para quem não considerar tais complexidades; também é adaptado de maneira mais restrita ao aplicativo específico em questão. Portanto, essa não é uma duplicata dessa pergunta, embora elas se sobreponham um pouco.
Eliah Kagan
Relacionado (mas não necessariamente duplicado): Como adiciono um diretório ao meu caminho?
Seth

Respostas:

20

Isso pode ser realizado com um pseudônimo. Você pode criar um alias de bash permanente adicionando uma única linha ao seu .bashrcarquivo.

Na execução do terminal nano ~/.bashrc

Adicione a seguinte linha na parte inferior:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

note que eu te adicionei o caminho completo em vez do, .para que isso funcione em qualquer diretório de trabalho. Feche e reabra o terminal ou executesource ~/.bashrc para recarregar o arquivo bashrc.

Dan
fonte
7

Esta não é uma pergunta elementar, a melhor maneira de fazer isso é criar um pseudônimo. Vou usar o netbeans como exemplo

Terminal Aberto Ctrl+Alt+T

nano ~/.bashrc

escreva isto na parte inferior do arquivo:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

A palavra netbeans é o comando que você usará para iniciar o programa. Você pode alterá-lo para o que precisar. Dentro das aspas está o comando que você deseja executar quando o alias do netbeans é chamado.

Para que este comando esteja ativo, você deve reabrir o Terminal

Johnn
fonte
Não posso votar devido a minha baixa reputação, mas obrigado por responder, foi muito útil
dapias
5

Você pode tentar copiar o executável para /usr/binse esse for um programa executável simples e não depender de nenhum outro arquivo. se depender de outros arquivos, o melhor a fazer é criar um comando de atalho para o programa.

Onde você cria o alias é você mesmo (.bashrc, .profile etc.). No entanto, eu pessoalmente deixei todas as minhas variáveis ​​de ambiente no meu .bash_aliasesarquivo (você precisa criá-lo à primeira vista).

Crie o arquivo .bash_aliases na sua pasta HOME e edite-o da maneira que desejar. Em seguida, para criar o atalho, você pode:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

Salve o arquivo e pronto.

ps: você também pode colocar o alias como lighttable e LIGHTTABLE, caso se esqueça de colocar em maiúsculas o L ou se o capslock estiver ativo por acidente, para que você não precise digitar o comando novamente.

Geo
fonte
Não posso votar devido a minha baixa reputação, mas obrigado por responder, foi muito útil
dapias
É recomendável colocar coisas que não estão instaladas via Apt no /usr/local/binlugar. Os /usr/binitens podem ser apagados ou substituídos por pacotes Apt, mas os itens /usr/local/binsão deixados em paz.
Chai T. Rex
3

Não sei por que outros respondentes não sugeriram isso, mas, como o OP realmente apontou, o prefixo à $PATHvariável teria sido da maneira que eu teria conseguido:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Em seguida, execute com:

LightTable
JoeNyland
fonte
Nota: Eu, então, apelido LightTableque lighttablepara facilidade de uso: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland
2

Melhor criar um link simbólico do que um apelido, eu acho. Um alias pode fazer substituições na sua linha de comando quando você não deseja uma; a criação de um link simbólico permitirá que você execute o programa como desejar:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

Isso criará um atalho em / usr / local / bin (que já deve estar no seu PATH!) Para onde o LightTable realmente está. Observe também que você pode renomear o link simbólico também se não gostar das letras maiúsculas em "LightTable":

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

Apenas para referência, se o programa for desajeitado, ou seja, reclama de não encontrar arquivos de configuração ou bibliotecas ou qualquer outra coisa, outra solução que pode ser mais útil é criar um script de wrapper. Para fazer isso, basta criar um arquivo (onde você quiser no momento) chamado "LightTable" (ou o que você quiser) com este:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

Mude as permissões deste arquivo:

chmod 755 <wrapper_script>

e tente executá-lo apenas para ver se funciona e, em caso afirmativo, mova-o para / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin
Zorawar
fonte
O que você está dizendo é verdade, mas não respondeu o que ele queria. Ele queria executá-lo usando o nome do arquivo / alias do arquivo
Johnn
1
@ Johnn: me desculpe, eu não entendo qual é a diferença. Entendo a pergunta como pedindo uma maneira de executar o programa sem precisar especificar seu caminho. Se o shell usa um alias ou o mecanismo PATH não faz diferença se você está apenas pedindo para executar o programa. Se você quiser fazer outra coisa com o arquivo, usar um alias para fornecer o caminho completo do arquivo é realmente a melhor maneira, mas ele só deseja executar o arquivo. Estou enganado?
Zorawar
Não, isso foi culpa minha, você está correto.
Johnn
1
@ Johnn: Ah, bem, obrigado pelo olhar crítico de qualquer maneira!
Zorawar
0

Eu tentei fazer isso quando comecei no Ubuntu. Quando você coloca o LightTable no terminal, ele procura um arquivo chamado LightTable nos $PATHdiretórios. você pode colocar echo $PATHpara obter os diretórios.

Se você deseja executar seu programa LightTable ./opt/LightTable/deploy/LightTable, o que você precisa fazer é colocar seu arquivo Light Table em /usr/games or /usr/bin.Mas isso requer permissões de super usuário

abra o terminal com Ctrl + Alt + T

então coloque

Prefiro criar um atalho do LightTable usando

sudo ln -s path/to/LightTable  /usr/games/LightTable

Em seguida, coloque a senha da SU. Em seguida, você pode acessar seu programa usando LightTableno terminal

Você pode colocar /usr/binou, em /usr/local/binvez de /usr/games, qualquer coisa que seja um $PATHdiretório, não precisa ser assim, mas eu recomendo que você o coloque/usr/local/bin

Também recomendo que você altere o arquivo de saída, em lightpathvez deLightPath

Prashanth Sriram
fonte