(Unix / Linux) Comment exécuter différentes commandes avec le même nom?


2

J'ai deux fichiers séparés sur mon ordinateur,

which execfile
/usr/local/bin/
/usr/bin/

Donc, j'ai deux fichiers avec le même nom dans deux répertoires différents. Comment puis-je spécifier exactement quelle commande à exécuter?

Merci.

Réponses:


8

vous pouvez spécifier le chemin complet de la commande lorsque vous l'exécutez, tapez:

/usr/bin/execfile

ou

/usr/local/bin/execfile

pour exécuter le fichier exact sur ce chemin


Merci, existe-t-il un moyen de choisir l’une de ces commandes par défaut?

6
Oui, si vous voulez que / usr / bin / execfile soit celui par défaut, assurez-vous que / usr / bin / est avant / usr / local / bin / dans votre PATHvariable d'environnement shell.
Bertrand Marron

@tusbar +1 pour la réponse correcte;)


1

Lors de la tentative d'exécution d'une commande foo , la recherche sur foo est effectuée dans les répertoires spécifiés par la variable d'environnement PATH, dans le même ordre que celui spécifié. Si vous souhaitez éviter cela, tapez le chemin d'accès complet à l'exécutable.

Tapez ceci dans un terminal:

echo $PATH

pour voir le contenu de votre variable d’environnement PATH.

Par exemple, si vous voulez toujours exécuter les premiers exécutables dans / bin, assurez-vous que / bin vient en premier dans $ PATH. Vous pouvez spécifier PATH dans le fichier .profile de votre répertoire personnel. Donc pour l'exemple ci-dessus, éditez le fichier et mettez cette ligne à la fin:

export PATH = / bin: $ PATH

Cela ne fonctionnera que pour votre utilisateur. Si vous souhaitez spécifier $ PATH de manière globale (cela fonctionnera pour tous les utilisateurs sauf ceux qui le changent dans leur fichier .profile), ajoutez la même ligne ci-dessus dans le fichier / etc / profile (vous aurez besoin des privilèges root .)

Rappelez-vous également que les fichiers de profil ne sont initialement analysés. Cela signifie que si vous éditez votre fichier .profile personnel, vous devrez demander à votre shell de le ré-analyser. Vous pouvez faire ceci en vous déconnectant et en vous reconnectant ou en tapant autrement:

source ~ / .profile

Pour le changement à l'échelle du système, tapez

source / etc / profile

Cela fera que votre session shell actuelle ré-analysera le fichier de profil. Si vous voulez que votre système complètement amorcé le réanalyse, je pense que vous feriez mieux de redémarrer votre session.

Rappelez-vous également que cela peut changer si vous utilisez un shell autre que bash.

Vous pouvez trouver des informations intéressantes dans la page de manuel de bash: http://linux.die.net/man/1/bash

Voir la section "Exécution de la commande".


BTW demander ceci sur superuser.com

1

Ecrivez un alias dans ~ / .profile:

alias execfile='/usr/local/bin/execfile'

Après la prochaine connexion, la bonne version sera choisie automatiquement. Commencez les autres avec le chemin complet.


1

vérifiez également que s'ils appartiennent tous les deux au même fichier - comme s'il s'agissait d'un lien

ls -al /usr/bin
ls -al /usr/local/bin

et vérifier si elles sont liées ensemble

si elles sont liées, alors vous pouvez exécuter n'importe quelle différence, sinon vous devez spécifier le chemin complet


1
Cela montrera s’ils sont liés par un lien symbolique (vous verrez quelque chose comme "/ usr / bin / execfile -> / usr / local / bin / execfile" s’ils le sont). Pour voir s’ils sont liés, utilisez ls -li /usr/bin/execfile /usr/local/bin/execfileet comparez leurs numéros d’inodes.
Dennis Williamson

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.