2015-01-17 3 views
0

Я пытаюсь использовать Юлию с Cygwin (ни о которой я очень хорошо знаю). Я построил и испытал Джулию, и все кажется прекрасным. Чтобы запустить Юлию с терминала, мне кажется, что мне нужно быть в Julia/usr/bin, а затем напечатать ./julia.exe (или just./julia). Это не работает ни в одном другом каталоге.Сопряжение связи с исполняемым файлом в Cygwin

Документация Юлия говорит

«После того, как он будет построен, вы можете запустить JuLiA исполняемый, используя его полный путь в директорию, созданную выше (директорию JuLiA), или, чтобы запустить его из любого места ... добавить мягкую ссылку на исполняемый файл julia в каталоге julia на/usr/local/bin (или любой подходящий каталог уже на вашем пути) '

и так как я хочу иметь возможность использовать Юлию в любом каталоге, это похоже на хорошая идея. Тем не менее, я попытался различные перестановки

пер -s/Julia/USR/бен/джулия/бен

(с использованием/бен, а не/USR/местные/бен, потому что, кажется, где вещи сохранены в cygwin, в отличие от собственно linux), и каждый раз, когда я набирал julia или ./julia, я просто получаю сообщение с сообщением -bash: julia: command не найден.

Я ожидаю, что это действительно очень просто - я не очень опытен. Любая помощь будет оценена по достоинству.

Редактировать - эта проблема была разрешена. Я попробовал много разных вещей для правильного пути, которым был julia.exe, включая относительный путь Coding/Julia/usr/bin (я должен был упомянуть об этом в первую очередь), что привело к ответу, который я принял ниже. Используя этот ответ, теперь я могу запустить Джулию в любом каталоге с командой julia.

+0

Я использую/usr/local/bin в Cygwin все время для всего, что не устанавливается с помощью программы установки Cygwin. Вы пробовали 'ln -s /Julia/usr/bin/julia.exe/usr/local/bin/julia' (или где бы вы его выразили)? То есть, включить '.exe' часть в командной строке? – pak

+0

Просто попробовал (в/usr/local/bin в случае, если это действительно имеет значение), все еще получая такое же сообщение об ошибке. Я пробовал с .exe и без, и с предикацией ./ (не совсем уверен, что это делает, кроме того, что он делает .exe), и я не смог заставить его работать. –

+0

Вы можете проверить PATH и разрешения ваших */bin каталогов. Если вы выполняете 'echo $ PATH', вы должны получить'/usr/local/bin:/usr/bin: 'в качестве первых записей. Каков результат работы 'ls -l/Julia/usr/bin/julia.exe',' ls -l/usr/local/bin/julia' после того, как вы попробовали команду 'ln -s'? – pak

ответ

4

Проблема заключается в том, что ln необходимо связать абсолютный путь, а не относительный. Проблема не была очевидна в OP, потому что путь, который вы написали , выглядел абсолютным, потому что он начинался с /.

Нечто вроде ln -s /home/<username>/Coding/Julia/usr/bin/julia.exe /usr/local/bin/julia.exe должно работать.

Примечание: Включив .exe на конце вашего LINK_NAME вы получите возможность звонить как julia и julia.exe. Если вы намерены использовать длинную форму или нет, лучше всего включить .exe как в TARGET, так и в LINK_NAME.

+1

Этот путь * есть * абсолютный. Это просто неправильно. –

+0

@KeithThompson Я готов ошибаться, но не запускает путь без '/' всегда искать этот путь ниже (т. Е. Относительный) к текущему каталогу? Используемый путь _actual_ был 'Coding/Julia/usr/bin/julia.exe', это относительный путь, к которому я имею в виду. – pak

+0

Да, путь, который не начинается с '/', является относительным путем и интерпретируется относительно текущего каталога. Путь, начинающийся с '/', по определению является абсолютным путем и интерпретируется относительно корневого каталога. Путь в вопросе: '/ Julia/usr/bin/julia'. Это абсолютный путь, но он недействителен, потому что есть (предположительно) нет каталога '/ Julia'. Я имею в виду путь в вопросе; Я не читал комментарии. –

Смежные вопросы