Ścieżka Bash działa dziwnie

5

Próbuję uruchomić openscadz wiersza polecenia i generuje błąd, ale jeśli wypiszę całą zgłoszoną ścieżkę, według której działa, jak pokazano poniżej.

[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

Nie mam pojęcia, co się tu dzieje, każda pomoc byłaby bardzo mile widziana.


źródło
4
Co type openscadprodukuje?
Chris Eberle
1
echo $PATH

Odpowiedzi:

6

whichkłamstwa; potrafi raportować rzeczy na podstawie wyidealizowanej sytuacji zebranej z twoich plików startowych powłoki, jednocześnie tracąc pewne możliwości i nie wychwytując żadnych zmian, których nie dokonały standardowe pliki. Użyj, typeaby zobaczyć, co naprawdę myśli shell.

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

Zewnętrzne polecenia po prostu nie potrafią powiedzieć, co się naprawdę stanie, ponieważ muszą zgadywać funkcje i aliasy na podstawie plików startowych i nie będą wiedzieć o rzeczach tworzonych przez autoloadmechanizmy; musisz zapytać samą powłokę, co ona zrobi.

2@mress:2 B$ type type
type is a shell builtin
geekozaur
źródło
Wszystko, co napisałeś, jest poprawne, ale nie odpowiedziałem, dlaczego jego bash powraca po prostym „openscad”, „/ usr / local / bin / openscad: nie ma takiego pliku ani katalogu”.
@kobame: ani ja, ani nikt inny nie znamy odpowiedzi bez znajomości wyników type openscad. Właśnie to próbowałem wyjaśnić; najwyraźniej mi się nie udało.
geekozaur
[dataproc @ Euclid ~] $ type openscad openscad is hashed (/ usr / local / bin / openscad)
Nie jestem pewien, co oznacza „hash openscad”, ale dla polecenia nie było aliasu. Dziękuję wszystkim za szybką odpowiedź.
@shawn: Uruchom, hash -ra następnie type openscadponownie. Wygląda na to, że mógł być w /usr/local/binśrodku, został przeniesiony, a powłoka nie zaktualizowała skrótu lokalizacji wewnętrznej.
geekozaur
0

Bez znajomości twojego .profile (.bashrc itp.) Tylko zgadywanie, niż gdzieś masz

alias openscad=/usr/local/bin/openscad

i dlatego twój bash próbuje uruchomić / usr / local / bin / openscad, a nie domyślny w / usr / bin.

jm666
źródło