我缺少什么?我可以从命令行调用“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.
是的,我已经访问了引用的链接,但我不知道它如何适用于我。
答案1
which rvm
查找名为 的可执行文件rvm
。该可执行文件在运行时仅输出“RVM 不是函数……”消息。
rvm
可能是 shell 中的一个函数,或者可能是一个别名。它已在您的~/.bashrc
(或在系统范围内/etc/bash.bashrc
或在其中之一包含的文件中)定义。要查看rvm
命令是什么,请运行type rvm
或command -v rvm
。
也可以看看如何which
在别名命令上使用?
答案2
rvm use
通过修改环境变量来指示应使用哪个版本的 ruby 来工作。仅当它作为函数运行时才能完成此操作。如果您将其作为命令运行,无论是使用完整路径还是未定义函数,都无法工作。这是因为,如果作为单独的进程运行,该进程将获得自己的环境副本,该副本会被修改,但在进程退出时会立即丢失。
答案3
我刚刚添加了
#!/bin/bash --login
在我哈德森工作的剧本开头。现在一切正常了! :)