Comment utiliser ln -s pour créer un raccourci de ligne de commande?


11

J'ai un fichier sh que j'aimerais pouvoir ouvrir à tout moment depuis le terminal. Je voudrais taper "studio" dans le terminal et ouvrir le studio android

Je me souviens avoir utilisé ln -spour cela, mais j'ai oublié et j'ai déjà perdu beaucoup de temps à chercher sur le Web.

De plus, dans quel répertoire le lien symbolique créé est-il conservé?

Voici la syntaxe de mon effort, commande introuvable

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found

essayez ./studio.
Sebastian

Je veux créer un lien vers ./studio que je peux ouvrir de n'importe où en tapant simplement en studio ou en banane
rickyjoepr

Si vous voulez exécuter le script de n'importe où en utilisant studioseul, vous devez placer le lien dans un endroit qui est recherché par le shell. Le shell fouille tout echo $PATH. Vous pouvez soit modifier, $PATHsoit placer le lien dans l'un des répertoires de $PATH. Que préfères-tu?
Sebastian

4
@Sebastian Veuillez utiliser les réponses pour répondre aux questions, pas aux commentaires. Et veuillez ne pas suggérer de supprimer les questions après avoir répondu. Nous sommes ici pour créer un référentiel de réponses qui restent et sont utiles aux futurs visiteurs.
Gilles 'SO- arrête d'être méchant'

1
Vous aimerez peut-être la aliascommande, qui est couramment utilisée au lieu de créer des liens symboliques pour raccourcir les noms de commande.
Winny

Réponses:


10

La commande que vous avez exécutée a créé un lien symbolique dans le répertoire actuel. A en juger par l'invite, le répertoire actuel est votre répertoire personnel. La création de liens symboliques vers des programmes exécutables dans votre répertoire personnel n'est pas particulièrement utile.

Lorsque vous tapez le nom d'un programme, le shell le recherche dans les répertoires répertoriés dans la PATHvariable d'environnement . Pour voir la valeur de cette variable, exécutez echo $PATH. Les répertoires sont séparés par deux points ( :). Un chemin typique est, /home/ricardo/bin:/usr/local/bin:/usr/bin:/binmais il y a beaucoup de variations.

Vous devez créer ce lien symbolique dans l'un des répertoires répertoriés dans $PATH. Si vous souhaitez rendre la commande accessible à tous les utilisateurs, créez le lien dans /usr/local/bin:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

Si vous souhaitez rendre la commande disponible uniquement pour vous (ce qui est la seule possibilité si vous ne disposez pas des privilèges d'administrateur), créez le lien dans ~/bin(le binsous - répertoire de votre répertoire personnel).

ln -s /opt/android-studio/bin/studio.sh ~/bin/studio

Si votre distribution ne place pas /home/ricardo/bindans votre PATH(où /home/ricardoest votre répertoire personnel), créez-la d'abord avec mkdir ~/binet ajoutez-la à votre PATHen ajoutant la ligne suivante à ~/.profile(créez le fichier s'il n'existe pas):

PATH=~/bin:$PATH

Le .profilefichier est lu lorsque vous vous connectez. Vous pouvez le lire dans le terminal actuel en exécutant . ~/.profile(cela ne s'applique qu'aux programmes démarrés à partir de ce terminal).


1
+1, mais comme le commentaire de Winny, je pense qu'un alias ~/.bashrcserait plus simple.
Sparhawk

@Sparhawk Un alias ne fonctionnerait que pour appeler le programme à partir d'un shell interactif, pas à partir d'un script, d'un raccourci sur le bureau ou de tout autre programme.
Gilles 'SO- arrête d'être méchant'

1
Vrai, mais la question indique I would like to type "studio" into the terminal, et cela est implicite du titre et des commandes citées.
Sparhawk

1

La façon la plus intuitive de mettre en œuvre votre souhait est d'utiliser un alias. Type:

alias studio=/opt/android-studio/bin/studio.sh

ou entrez un alias associé dans .profile ou mieux: ce que votre shell utilise comme $ ENV.

Notez que vous devrez peut-être encore ajouter

/opt/android-studio/bin

à votre PATH pour pouvoir utiliser le logiciel. Le mieux est de vérifier d'abord si cela fonctionne sans un CHEMIN étendu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.