Я использую Mac OS X. У меня установлены две версии Ruby (2.1.5 и 2.0.0). Первый установлен в /another/.path/to/ruby (перед словом «путь» стоит точка, чтобы имитировать тот факт, что путь содержит промежуточный каталог с точками), в дополнение к системному каталогу по умолчанию (версия 2.0. 0) в / usr / bin / ruby. Я использовал rbenv для установки Ruby.
После того, как я вручную установил переменную среды PATH, чтобы команда ruby по умолчанию была найдена в другом каталоге: /another/.path/to/ruby. Сейчас проверяю
which -a ruby
Сначала в качестве вывода используется правильный рубин.
/another/.path/to/ruby
/usr/bin/ruby
Теперь я создаю сценарий rbs с первой строкой shebang, определяющей используемый рубин.
#!/usr/bin/env ruby
puts 'hey there'
Тогда я бегу
./rbs
он выводит «привет». Хорошо. Между тем, Ruby использует правильную версию.
/usr/bin/env ruby --version
а также
ruby --version
оба выхода 2.1.5. Так что использование новой версии делает отличную работу.
Однако здесь возникает проблема: теперь я обновляю файл rbs, чтобы он был:
#!/another/.path/to/ruby
puts 'hey there'
Обратите внимание, что я обновил shebang, чтобы использовать абсолютный путь к желаемому рубину. тогда я бегу
./rbs
Он выводит:
./rbs: line 2: puts: command not found
что слишком странно;
но если я убегу
ruby ./rbs
он выводит «привет, там» как обычно. Похоже, что shebang отлично работает с / usr / bin / env ruby, но не для абсолютного пути для вновь установленного ruby?
Почему это? Есть ли способ исправить это, чтобы обновленный скрипт мог работать, набрав следующее?
./rbs
Спасибо!
./rubyscript
в вашем./rbs
выводе? - person Wenbing Li   schedule 07.01.2015/another/.path/to/ruby rbs
работает? - person roob   schedule 07.01.2015