2014-10-24 3 views
0

Я уверен, что кто-то очень посмеется над мной ... скромным мальчиком Windows. Я даже не знаю, как опубликовать вопрос (не говоря уже о решении Google). Вот путаница:Выполняется в текущем каталоге, а не указывается исполняемый файл linux

Я использую виртуальный бокс с установленной системой trusty64. Я типа:

$ кд /home/vagrant/.rbenv/versions/2.1.3/bin

$ Ls

расслоении Bundler эрб erubis ...

$ пакетирования -v

: Нет такого файла или каталога

$ /home/vagrant/.rbenv/versions/2.1.3/bin/bundler -v

Bundler версия 1.7.3

$

Честно говоря, я новичок в Linux, которая, вероятно, теперь ясно. Но разве эти два эквивалента? Если я вхожу в каталог и выполняю «bundler -v», не должен ли я получить тот же результат, что и я, когда я явно вводил свой текущий путь и исполняемый файл вместе: «/home/vagrant/.rbenv/versions/2.1 .3/bin/bundler -v "?

+0

Реальная причина ошибки в том, что окна создается файл сценария Bundler во время предоставления в VBox. Файлы сценариев с окончанием строки Windows \ r \ n не запускаются в Linux и вызывают довольно ненужное сообщение: «Нет такого файла или каталога». Решение состоит в том, чтобы сделать окончания строки во всех сценариях linux \ n. Очень расстраивает несколько часов, потерянных на этом. – EscapeArtist

ответ

0

Чтобы запустить бинарный файл, что система знает, потому что он находится в переменной $ PATH Вы можете использовать название программы и каких-либо параметров, например:

bundle -v 

Если ваша программа не в $ PATH и вы хотите, чтобы выполнить его в текущем рабочем каталоге, выполните команду:

cd /path/to/file/directory 
./programname 

или в качестве альтернативы вы можете использовать абсолютный путь, например: /home/vagrant/.rbenv/versions/2.1.3/bin/bundler -v

Чтобы найти каталоги, содержащие программы, о которых система знает, запустите echo $PATH в своей оболочке.

Посмотрите здесь: https://askubuntu.com/questions/164180/different-ways-of-executing-binaries-and-scripts

+0

Большое спасибо за объяснение и ссылку. Для тех, кто после этого, в ссылке, прочитайте собственное окончательное суммирование OPs того, как Linux обрабатывает пути и команды. Это довольно полно. Ничего себе это отличается от окон ... – EscapeArtist

+0

Я был обеспокоен во время моего короткого изучения Linux, не имея расширений файлов ... но недостаточно, чтобы в него вникнуть ... большая ошибка. Наконец, ударился головой с этой записью. Теперь я получаю это и понимаю, почему я так сильно застрял. – EscapeArtist

+0

У меня есть скрипт связки в нескольких каталогах. ", который связывает" возвращает "/ vagrant/bin/bundle". «/ vagrant/bin» - это первый объект в моей $ PATH. Тем не менее, я все еще получаю: Нет такого файла или каталога, когда я запускаю «bundle -v» И когда я набираю «/ vagrant/bin/bundle -v». В этом каталоге сценарий в этом каталоге - «#!/Usr/bin/env ruby». Поэтому, хотя я понимаю больше, чем раньше, я остаюсь совершенно смущенным, почему мой «пакет -v» не будет запускаться из этого каталога. Единственный скрипт, который работает, указан в моем OP "/home/vagrant/.rbenv/versions/2.1.3/bin/bundle -v". – EscapeArtist

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