Chemin Bash agissant étrangement


5

J'essaie de démarrer à openscadpartir de la ligne de commande et une erreur est générée, mais si je tape le chemin complet indiqué, il semble fonctionner comme ci-dessous.

[dataproc@Euclid ~]$ which openscad
/usr/bin/openscad
[dataproc@Euclid ~]$ openscad
bash: /usr/local/bin/openscad: No such file or directory
[dataproc@Euclid ~]$ /usr/bin/openscad
[dataproc@Euclid ~]$ #this worked

Je ne sais absolument pas ce qui se passe ici, toute aide serait grandement appréciée.

bash  which 

4
Que type openscadproduit-on?
Chris Eberle

1
Quelle est la sortie deecho $PATH

Réponses:


6

whichdes mensonges; il peut signaler des choses basées sur une situation idéale telle que glanée dans vos fichiers de démarrage du shell, tout en laissant certaines possibilités et en ne détectant aucune modification non effectuée par les fichiers standard. Utilisez typepour voir ce que la coque pense vraiment se passe.

2@mress:1 B$ type which
which is /usr/bin/which

Les commandes externes ne peuvent tout simplement pas dire ce qui se passera réellement, car elles doivent deviner les fonctions et les alias basés sur vos fichiers de démarrage et ne sauront rien des choses créées par les autoloadmécanismes; vous devez demander à la coquille elle-même ce qu’elle fera.

2@mress:2 B$ type type
type is a shell builtin

Tout ce que vous avez écrit est correct, mais n'a pas expliqué pourquoi son bash revenait pour le simple "openscad", "/ usr / local / bin / openscad: aucun fichier ni répertoire de ce type".

@ kobame: ni moi ni personne ne pouvons connaître la réponse sans connaître le résultat de type openscad. C'est ce que j'ai essayé d'expliquer. apparemment j'ai échoué.
Geekosaur

[dataproc @ Euclid ~] $ type openscad openscad est haché (/ usr / local / bin / openscad)

Je ne suis pas sûr de ce que signifie "openscad is hashed" mais il n'y avait pas d'alias pour la commande. Merci à tous pour la réponse rapide.

@shawn: Run hash -ret puis type openscadencore. On dirait qu'il a pu être /usr/local/bindéplacé et que le shell n'a pas mis à jour son hachage d'emplacement interne.
geekosaur

0

Sans connaître votre .profile (.bashrc, etc.) seulement deviner, que vous avez quelque part

alias openscad=/usr/local/bin/openscad

et c’est pourquoi votre bash essaie d’exécuter / usr / local / bin / openscad et non celui par défaut de / usr / bin.

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.