Comment puis-je faire en sorte que je puisse exécuter un programme spécifique, simplement en tapant son nom dans la console?

17

J'ai récemment installé Light Table en le téléchargeant depuis le dépôt git, et j'ai suivi les instructions sur ce site Web pour créer un lanceur de bureau.

Maintenant, je veux exécuter le programme en tapant directement dans le terminal

LightTable

et pas

./opt/LightTable/deploy/LightTable
dapias
la source
6
@ user68186 L'ajout du répertoire contenant à la PATHvariable d'environnement n'est souvent pas le meilleur moyen d'y parvenir et peut même parfois casser le système ou créer des failles de sécurité. (Il faut examiner toute autre executables qui seront transformés en commandes de cela, ainsi que là où dans PATHil est ajouté.) Ajout d' un alias de shell, couverts par des réponses ici, est préférable pour tous ceux qui ne veut pas tenir compte de ces complexités; il est également plus étroitement adapté à l'application spécifique en question. Ce n'est donc pas un double de cette question, même si elles se chevauchent un peu.
Eliah Kagan
Liés (mais pas nécessairement un doublon): Comment ajouter un répertoire à mon chemin?
Seth

Réponses:

20

Cela peut être grossièrement accompli avec un alias. Vous pouvez créer un alias bash permanent en ajoutant une seule ligne à votre .bashrcfichier.

Dans la course du terminal nano ~/.bashrc

Ajoutez la ligne suivante en bas:

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

remarquez que je vous ai ajouté le chemin complet au lieu de la .donc cela fonctionnera dans n'importe quel répertoire de travail. Fermez et rouvrez le terminal ou exécutez source ~/.bashrcpour recharger le fichier bashrc.

Dan
la source
7

Ce n'est pas une question élémentaire, la meilleure façon de le faire est de créer un alias, je vais utiliser les netbeans comme exemple

Terminal ouvert Ctrl+Alt+T

nano ~/.bashrc

écrivez ceci au bas du fichier:

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

Ctrl + x

Y

Enter

Le mot netbeans est la commande que vous utiliserez pour démarrer le programme, vous pouvez le changer en ce dont vous avez besoin. À l'intérieur des guillemets se trouve la commande que vous souhaitez exécuter lorsque l'alias netbeans est appelé.

Pour que cette commande soit active, vous devez rouvrir le terminal

Johnn
la source
Je ne peux pas voter en raison de ma mauvaise réputation, mais merci d'avoir répondu, c'était très utile
dapias
5

Vous pouvez essayer de copier l'exécutable /usr/binsi c'est un programme exécutable simple et ne dépend d'aucun autre fichier. s'il dépend d'autres fichiers, le mieux est de créer une commande de raccourci vers le programme.

Vous créez vous-même l'alias (.bashrc, .profile, etc.). Cependant, je laisse personnellement toutes mes variables d'environnement dans mon .bash_aliasesfichier (vous devez le créer à première vue).

Créez le fichier .bash_aliases dans votre dossier HOME et modifiez-le comme vous le souhaitez. Ensuite, pour créer le raccourci, vous pouvez faire:

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

Enregistrez le fichier et c'est tout.

ps: vous pouvez également mettre l'alias en table lumineuse et en table lumineuse au cas où vous oublieriez de mettre en majuscule le L ou si le verrouillage des majuscules est activé par accident, vous n'avez donc pas à taper à nouveau la commande.

Géo
la source
Je ne peux pas voter en raison de ma mauvaise réputation, mais merci d'avoir répondu, c'était très utile
dapias
Il est recommandé de mettre à la place des choses qui ne sont pas installées via Apt /usr/local/bin. Les éléments /usr/binpeuvent être effacés ou remplacés par des packages Apt, mais les éléments /usr/local/binsont laissés seuls.
Chai T. Rex
3

Je ne sais pas pourquoi les autres répondants n'ont pas suggéré cela, mais comme le PO l'a fait remarquer, l'ajout de la $PATHvariable aurait été la façon dont j'aurais réalisé cela:

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

Exécutez ensuite avec:

LightTable
JoeNyland
la source
Note: Je voudrais ensuite alias LightTableà lighttablela facilité d'utilisation: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland
2

Mieux vaut créer un lien symbolique qu'un alias je pense. Un alias peut effectuer des substitutions sur votre ligne de commande lorsque vous n'en voulez pas; la création d'un lien symbolique vous permettra d'exécuter le programme comme vous le souhaitez:

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

Cela créera un raccourci dans / usr / local / bin (qui devrait déjà être dans votre PATH!) Vers où se trouve réellement LightTable. Notez également que vous pouvez également renommer le lien symbolique si vous n'aimez pas les majuscules dans "LightTable":

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

Juste pour référence, si le programme est mal conçu, c'est-à-dire se plaint de ne pas trouver de fichiers de configuration ou de bibliothèques ou autre, alors une autre solution qui pourrait être plus utile consiste à créer un script wrapper. Pour ce faire, il suffit de créer un fichier (où vous voulez pour le moment) appelé "LightTable" (ou tout ce que vous voulez) avec ceci dedans:

#!/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

Modifiez les autorisations de ce fichier:

chmod 755 <wrapper_script>

et essayez de l'exécuter juste pour voir si cela fonctionne, et si c'est le cas, déplacez-le vers / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin
Zorawar
la source
Ce que vous dites est vrai, mais n'a pas répondu à ce qu'il voulait. Il voulait l'exécuter en utilisant le nom du fichier / alias du fichier
Johnn
1
@Johnn: Je suis désolé, je ne comprends pas quelle est la différence. Je comprends la question comme demandant un moyen d'exécuter le programme sans avoir à spécifier son chemin. Que le shell utilise un alias ou le mécanisme PATH ne fait aucune différence si vous demandez simplement d'exécuter le programme. Si vous vouliez faire autre chose avec le fichier, alors utiliser un alias pour fournir le chemin complet du fichier est en effet la meilleure façon, mais il veut juste exécuter le fichier. Suis-je trompé?
Zorawar
Non, c'était ma faute, tu as raison.
Johnn
1
@Johnn: Ah, eh bien, merci pour l'œil critique de toute façon!
Zorawar
0

J'ai essayé de le faire lorsque j'ai commencé dans Ubuntu. Lorsque vous placez LightTable dans le terminal, il recherche un fichier nommé LightTable dans les $PATHrépertoires. vous pouvez mettre echo $PATHpour obtenir les répertoires.

Si vous souhaitez exécuter votre programme LightTable dans ./opt/LightTable/deploy/LightTable, alors ce que vous devez faire est de placer votre fichier Light Table dans /usr/games or /usr/bin.Mais cela nécessite des autorisations de super-utilisateur

ouvrir le terminal par Ctrl + Alt + T

puis mettez

Je préfère créer un raccourci de LightTable en utilisant

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

Mettez ensuite le mot de passe SU. Ensuite, vous pouvez accéder à votre programme en utilisant LightTabledans le terminal

Vous pouvez mettre /usr/binou à la /usr/local/binplace de /usr/gamestout ce qui est un $PATHrépertoire, il n'a pas besoin d'être comme ça, mais je vous recommande de le placer dans/usr/local/bin

Je vous recommande également de modifier le fichier de sortie au lightpathlieu deLightPath

Prashanth Sriram
la source