(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.


la source

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


la source
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
/usr/local/bin/execfile

ou

/usr/bin/execfile
Bertrand Marron
la source
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".

Dom De Felice
la source
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.

fgm
la source
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

shahjapan
la source
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
0
/usr/local/bin/execfile

/usr/bin/execfile
Matthew Flaschen
la source