5

Я пытаюсь запустить openscad из командной строки, и он выдает ошибку, но если я наберу весь путь, по которому он работает, как показано ниже.

[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

Я совершенно не понимаю, что здесь происходит, любая помощь будет принята с благодарностью.

2 ответа2

6

which лежит; он может сообщать о вещах, основанных на идеализированной ситуации, полученной из файлов запуска вашей оболочки, при этом упуская некоторые возможности и не отслеживая никаких изменений, не внесенных стандартными файлами. Используйте type чтобы увидеть, что на самом деле думает оболочка.

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

Внешние команды просто не могут сказать, что на самом деле произойдет, потому что они должны угадывать функции и псевдонимы на основе ваших файлов запуска и не будут знать о вещах, созданных механизмами autoload ; вам нужно спросить саму оболочку, что она будет делать.

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

Не зная вашего .profile (.bashrc и т.д.), Только догадываясь, чем вы где-то обладаете

alias openscad=/usr/local/bin/openscad

и именно поэтому ваш bash пытается запустить /usr /local /bin /openscad, а не по умолчанию в /usr /bin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .