Что мне не хватает? Я могу вызывать «rvm» из командной строки, но не ссылаться на весь путь, which rvm
словам which rvm
я использую.
Не то, чтобы это было важно, но я остаюсь включенным как «jenkins» все время, и эти команды выполняются последовательно.
$ whoami jenkins
RVM находится здесь
$ which rvm /home/jenkins/.rvm/bin/rvm
Это работает
$ rvm use 1.8.7 Using /home/jenkins/.rvm/gems/ruby-1.8.7-p370 Running /home/jenkins/.rvm/hooks/after_use
Но это не работает
$ /home/jenkins/.rvm/bin/rvm use 1.8.7 RVM is not a function, selecting rubies with 'rvm use ...' will not work. You need to change your terminal settings to allow shell login. Please visit https://rvm.io/workflow/screen/ for example.
Да, я посетил ссылку, на которую ссылаются, но я не вижу, как это относится ко мне.
which rvm
ищет исполняемый файл, называемый rvm
. Этот исполняемый файл выводит сообщение «RVM is not a … …» при запуске.
rvm
, вероятно, является функцией или, возможно, псевдонимом в вашей оболочке. Он определен в вашем ~/.bashrc
(или в общесистемном /etc/bash.bashrc
или в файле, включенном в один из них). Чтобы узнать, что rvm
команда rvm
, запустите type rvm
или command -v rvm
.
См. Также Как использовать команду aliased?
rvm use
работает путем изменения переменных среды, чтобы указать, какая версия рубина должна использоваться. Это можно сделать только в том случае, если он запущен как функция. Если вы запустите его как команду, либо используя полный путь, либо не имея определенную функцию, это не сработает. Это связано с тем, что при запуске в виде отдельного процесса, который обрабатывает свою собственную копию среды, эта копия изменяется, но сразу же теряется, когда процесс завершается.
Я только что добавил
#!/bin/bash --login
в начале скрипта в моей работе Хадсона. Все работает сейчас! 🙂